From a5fb1c5db00481df8e2707b1b1ef8ecd4d62559f Mon Sep 17 00:00:00 2001 From: "tony@chromium.org" Date: Tue, 12 Jan 2010 03:39:53 +0000 Subject: Take 2: Preload the visited link db on the file thread if the file exists. Otherwise, just load like normal on the UI thread. This failed before because the browser may have shutdown before the posted task ran. When the posted task finally runs, it tried to use the profile, but the profile was already deleted. Make a small change to VisitedLinkMaster so GetDatabaseFileName no longer depends on the profile. BUG=24163 Review URL: http://codereview.chromium.org/507047 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35991 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/profile.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'chrome/browser/profile.h') diff --git a/chrome/browser/profile.h b/chrome/browser/profile.h index 1d15753..95f76b0 100644 --- a/chrome/browser/profile.h +++ b/chrome/browser/profile.h @@ -64,8 +64,8 @@ class ThemeProvider; class ThumbnailStore; class URLRequestContextGetter; class UserScriptMaster; +class VisitedLinkCreator; class VisitedLinkMaster; -class VisitedLinkEventListener; class WebDataService; class WebKitContext; class WebResourceService; @@ -148,6 +148,10 @@ class Profile { // that this method is called. virtual VisitedLinkMaster* GetVisitedLinkMaster() = 0; + // Loads the visited link master on the file thread. It's safe to call + // GetVisitedLinkMaster without calling this in advance. + virtual void PreloadVisitedLinkMaster() = 0; + // Retrieves a pointer to the ExtensionsService associated with this // profile. The ExtensionsService is created at startup. virtual ExtensionsService* GetExtensionsService() = 0; @@ -406,6 +410,7 @@ class ProfileImpl : public Profile, virtual Profile* GetOriginalProfile(); virtual webkit_database::DatabaseTracker* GetDatabaseTracker(); virtual VisitedLinkMaster* GetVisitedLinkMaster(); + virtual void PreloadVisitedLinkMaster(); virtual UserScriptMaster* GetUserScriptMaster(); virtual SSLHostState* GetSSLHostState(); virtual net::TransportSecurityState* GetTransportSecurityState(); @@ -491,8 +496,7 @@ class ProfileImpl : public Profile, FilePath path_; FilePath base_cache_path_; - scoped_ptr visited_link_event_listener_; - scoped_ptr visited_link_master_; + scoped_refptr visited_link_creator_; scoped_refptr extensions_service_; scoped_refptr user_script_master_; scoped_refptr extension_devtools_manager_; -- cgit v1.1