diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-03 02:27:01 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-03 02:27:01 +0000 |
commit | 0d3dc8e2804b0adc4f572944db027929e2b5af5a (patch) | |
tree | efe4a3ecde226002698017cceba2952b8979a66f /chrome/browser/importer | |
parent | 8dc291a4dbeed088fbdc36115b250c5f83d3edde (diff) | |
download | chromium_src-0d3dc8e2804b0adc4f572944db027929e2b5af5a.zip chromium_src-0d3dc8e2804b0adc4f572944db027929e2b5af5a.tar.gz chromium_src-0d3dc8e2804b0adc4f572944db027929e2b5af5a.tar.bz2 |
Fifth patch in getting rid of caching MessageLoop pointers.
BUG=25354
Review URL: http://codereview.chromium.org/345037
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30790 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/importer')
-rw-r--r-- | chrome/browser/importer/importer.cc | 21 | ||||
-rw-r--r-- | chrome/browser/importer/importer.h | 8 | ||||
-rw-r--r-- | chrome/browser/importer/importer_bridge.cc | 67 | ||||
-rw-r--r-- | chrome/browser/importer/importer_bridge.h | 6 | ||||
-rw-r--r-- | chrome/browser/importer/importer_unittest.cc | 12 | ||||
-rw-r--r-- | chrome/browser/importer/toolbar_importer.cc | 15 |
6 files changed, 58 insertions, 71 deletions
diff --git a/chrome/browser/importer/importer.cc b/chrome/browser/importer/importer.cc index e2d30f1..892d2aa 100644 --- a/chrome/browser/importer/importer.cc +++ b/chrome/browser/importer/importer.cc @@ -11,8 +11,8 @@ #include "base/thread.h" #include "chrome/browser/bookmarks/bookmark_model.h" #include "chrome/browser/browser_list.h" -#include "chrome/browser/browser_process.h" #include "chrome/browser/browsing_instance.h" +#include "chrome/browser/chrome_thread.h" #include "chrome/browser/importer/firefox_profile_lock.h" #include "chrome/browser/importer/importer_bridge.h" #include "chrome/browser/renderer_host/site_instance.h" @@ -394,21 +394,6 @@ ImporterHost::ImporterHost() observer_(NULL), task_(NULL), importer_(NULL), - file_loop_(g_browser_process->file_thread()->message_loop()), - waiting_for_bookmarkbar_model_(false), - installed_bookmark_observer_(false), - is_source_readable_(true), - headless_(false), - parent_window_(NULL) { - importer_list_.DetectSourceProfiles(); -} - -ImporterHost::ImporterHost(MessageLoop* file_loop) - : profile_(NULL), - observer_(NULL), - task_(NULL), - importer_(NULL), - file_loop_(file_loop), waiting_for_bookmarkbar_model_(false), installed_bookmark_observer_(false), is_source_readable_(true), @@ -517,7 +502,7 @@ void ImporterHost::StartImportSettings(const ProfileInfo& profile_info, } importer_->set_import_to_bookmark_bar(import_to_bookmark_bar); scoped_refptr<ImporterBridge> bridge( - new InProcessImporterBridge(writer_.get(), file_loop_, this)); + new InProcessImporterBridge(writer_.get(), this)); task_ = NewRunnableMethod(importer_, &Importer::StartImport, profile_info, items, bridge); @@ -605,7 +590,7 @@ void ImporterHost::InvokeTaskIfDone() { if (waiting_for_bookmarkbar_model_ || !registrar_.IsEmpty() || !is_source_readable_) return; - file_loop_->PostTask(FROM_HERE, task_); + ChromeThread::PostTask(ChromeThread::FILE, FROM_HERE, task_); } void ImporterHost::ImportItemStarted(ImportItem item) { diff --git a/chrome/browser/importer/importer.h b/chrome/browser/importer/importer.h index 6daafbb..35e2959 100644 --- a/chrome/browser/importer/importer.h +++ b/chrome/browser/importer/importer.h @@ -21,7 +21,6 @@ #include "googleurl/src/gurl.h" class ImporterBridge; -class MessageLoop; class TemplateURL; struct IE7PasswordInfo; @@ -158,10 +157,6 @@ class ImporterHost : public base::RefCountedThreadSafe<ImporterHost>, ImporterHost(); ~ImporterHost(); - // This constructor only be used by unit-tests, where file thread does not - // exist. - explicit ImporterHost(MessageLoop* file_loop); - // BookmarkModelObserver methods. virtual void Loaded(BookmarkModel* model); virtual void BookmarkNodeMoved(BookmarkModel* model, @@ -293,9 +288,6 @@ class ImporterHost : public base::RefCountedThreadSafe<ImporterHost>, // The importer used in the task; Importer* importer_; - // The message loop for reading the source profiles. - MessageLoop* file_loop_; - // True if we're waiting for the model to finish loading. bool waiting_for_bookmarkbar_model_; diff --git a/chrome/browser/importer/importer_bridge.cc b/chrome/browser/importer/importer_bridge.cc index dfe98fd..eddb026 100644 --- a/chrome/browser/importer/importer_bridge.cc +++ b/chrome/browser/importer/importer_bridge.cc @@ -4,7 +4,7 @@ #include "chrome/browser/importer/importer_bridge.h" -#include "base/message_loop.h" +#include "chrome/browser/chrome_thread.h" #include "chrome/browser/importer/importer.h" #if defined(OS_WIN) #include "chrome/browser/password_manager/ie7_password.h" @@ -12,78 +12,89 @@ #include "webkit/glue/password_form.h" InProcessImporterBridge::InProcessImporterBridge(ProfileWriter* writer, - MessageLoop* delegate_loop, ImporterHost* host) - : ImporterBridge(writer, delegate_loop, host), - main_loop_(MessageLoop::current()), - delegate_loop_(NULL) { + : ImporterBridge(writer, host) { } void InProcessImporterBridge::AddBookmarkEntries( const std::vector<ProfileWriter::BookmarkEntry>& bookmarks, const std::wstring& first_folder_name, int options) { - main_loop_->PostTask(FROM_HERE, NewRunnableMethod(writer_, - &ProfileWriter::AddBookmarkEntry, bookmarks, first_folder_name, - options)); + ChromeThread::PostTask( + ChromeThread::UI, FROM_HERE, + NewRunnableMethod( + writer_, &ProfileWriter::AddBookmarkEntry, bookmarks, + first_folder_name, options)); } void InProcessImporterBridge::AddHomePage(const GURL &home_page) { - main_loop_->PostTask(FROM_HERE, NewRunnableMethod(writer_, - &ProfileWriter::AddHomepage, home_page)); + ChromeThread::PostTask( + ChromeThread::UI, FROM_HERE, + NewRunnableMethod(writer_, &ProfileWriter::AddHomepage, home_page)); } #if defined(OS_WIN) void InProcessImporterBridge::AddIE7PasswordInfo( const IE7PasswordInfo password_info) { - main_loop_->PostTask(FROM_HERE, NewRunnableMethod(writer_, - &ProfileWriter::AddIE7PasswordInfo, password_info)); + ChromeThread::PostTask( + ChromeThread::UI, FROM_HERE, + NewRunnableMethod(writer_, &ProfileWriter::AddIE7PasswordInfo, + password_info)); } #endif // OS_WIN void InProcessImporterBridge::SetFavIcons( const std::vector<history::ImportedFavIconUsage>& fav_icons) { - main_loop_->PostTask(FROM_HERE, NewRunnableMethod(writer_, - &ProfileWriter::AddFavicons, fav_icons)); + ChromeThread::PostTask( + ChromeThread::UI, FROM_HERE, + NewRunnableMethod(writer_, &ProfileWriter::AddFavicons, fav_icons)); } void InProcessImporterBridge::SetHistoryItems( const std::vector<history::URLRow> &rows) { - main_loop_->PostTask(FROM_HERE, NewRunnableMethod(writer_, - &ProfileWriter::AddHistoryPage, rows)); + ChromeThread::PostTask( + ChromeThread::UI, FROM_HERE, + NewRunnableMethod(writer_, &ProfileWriter::AddHistoryPage, rows)); } void InProcessImporterBridge::SetKeywords( const std::vector<TemplateURL*>& template_urls, int default_keyword_index, bool unique_on_host_and_path) { - main_loop_->PostTask(FROM_HERE, NewRunnableMethod(writer_, - &ProfileWriter::AddKeywords, template_urls, default_keyword_index, - unique_on_host_and_path)); + ChromeThread::PostTask( + ChromeThread::UI, FROM_HERE, + NewRunnableMethod( + writer_, &ProfileWriter::AddKeywords, template_urls, + default_keyword_index, unique_on_host_and_path)); } void InProcessImporterBridge::SetPasswordForm( const webkit_glue::PasswordForm& form) { - main_loop_->PostTask(FROM_HERE, NewRunnableMethod(writer_, - &ProfileWriter::AddPasswordForm, form)); + ChromeThread::PostTask( + ChromeThread::UI, FROM_HERE, + NewRunnableMethod(writer_, &ProfileWriter::AddPasswordForm, form)); } void InProcessImporterBridge::NotifyItemStarted(ImportItem item) { - main_loop_->PostTask(FROM_HERE, NewRunnableMethod(host_, - &ImporterHost::ImportItemStarted, item)); + ChromeThread::PostTask( + ChromeThread::UI, FROM_HERE, + NewRunnableMethod(host_, &ImporterHost::ImportItemStarted, item)); } void InProcessImporterBridge::NotifyItemEnded(ImportItem item) { - main_loop_->PostTask(FROM_HERE, NewRunnableMethod(host_, - &ImporterHost::ImportItemEnded, item)); + ChromeThread::PostTask( + ChromeThread::UI, FROM_HERE, + NewRunnableMethod(host_, &ImporterHost::ImportItemEnded, item)); } void InProcessImporterBridge::NotifyStarted() { - main_loop_->PostTask(FROM_HERE, NewRunnableMethod(host_, - &ImporterHost::ImportStarted)); + ChromeThread::PostTask( + ChromeThread::UI, FROM_HERE, + NewRunnableMethod(host_, &ImporterHost::ImportStarted)); } void InProcessImporterBridge::NotifyEnded() { - main_loop_->PostTask(FROM_HERE, + ChromeThread::PostTask( + ChromeThread::UI, FROM_HERE, NewRunnableMethod(host_, &ImporterHost::ImportEnded)); } diff --git a/chrome/browser/importer/importer_bridge.h b/chrome/browser/importer/importer_bridge.h index 02a8d9a..d3660d7 100644 --- a/chrome/browser/importer/importer_bridge.h +++ b/chrome/browser/importer/importer_bridge.h @@ -19,10 +19,8 @@ class ImporterBridge : public base::RefCountedThreadSafe<ImporterBridge> { public: ImporterBridge(ProfileWriter* writer, - MessageLoop* delegate_loop, ImporterHost* host) : writer_(writer), - delegate_loop_(delegate_loop), host_(host) { } virtual ~ImporterBridge() {} @@ -67,7 +65,6 @@ class ImporterBridge : public base::RefCountedThreadSafe<ImporterBridge> { friend class Toolbar5Importer; ProfileWriter* writer_; - MessageLoop* delegate_loop_; ImporterHost* host_; DISALLOW_COPY_AND_ASSIGN(ImporterBridge); @@ -76,7 +73,6 @@ class ImporterBridge : public base::RefCountedThreadSafe<ImporterBridge> { class InProcessImporterBridge : public ImporterBridge { public: InProcessImporterBridge(ProfileWriter* writer, - MessageLoop* delegate_loop, ImporterHost* host); // Methods inherited from ImporterBridge. @@ -104,8 +100,6 @@ class InProcessImporterBridge : public ImporterBridge { virtual void NotifyEnded(); private: - MessageLoop* main_loop_; - MessageLoop* delegate_loop_; DISALLOW_COPY_AND_ASSIGN(InProcessImporterBridge); }; diff --git a/chrome/browser/importer/importer_unittest.cc b/chrome/browser/importer/importer_unittest.cc index e6d09af6..23b7220 100644 --- a/chrome/browser/importer/importer_unittest.cc +++ b/chrome/browser/importer/importer_unittest.cc @@ -18,6 +18,7 @@ #include "base/path_service.h" #include "base/scoped_comptr_win.h" #include "base/stl_util-inl.h" +#include "chrome/browser/chrome_thread.h" #include "chrome/browser/importer/ie_importer.h" #include "chrome/browser/importer/importer.h" #include "chrome/browser/importer/importer_bridge.h" @@ -31,6 +32,9 @@ using webkit_glue::PasswordForm; class ImporterTest : public testing::Test { public: + ImporterTest() + : ui_thread_(ChromeThread::UI, &message_loop_), + file_thread_(ChromeThread::FILE, &message_loop_) {} protected: virtual void SetUp() { // Creates a new profile in a new subdirectory in the temp directory. @@ -84,7 +88,7 @@ class ImporterTest : public testing::Test { profile_info.browser_type = FIREFOX3; profile_info.app_path = app_path_; profile_info.source_path = profile_path_; - scoped_refptr<ImporterHost> host = new ImporterHost(loop); + scoped_refptr<ImporterHost> host = new ImporterHost(); host->SetObserver(observer); int items = HISTORY | PASSWORDS | FAVORITES; if (import_search_plugins) @@ -96,6 +100,8 @@ class ImporterTest : public testing::Test { } MessageLoopForUI message_loop_; + ChromeThread ui_thread_; + ChromeThread file_thread_; std::wstring test_path_; std::wstring profile_path_; std::wstring app_path_; @@ -378,7 +384,7 @@ TEST_F(ImporterTest, IEImporter) { // Starts to import the above settings. MessageLoop* loop = MessageLoop::current(); - scoped_refptr<ImporterHost> host = new ImporterHost(loop); + scoped_refptr<ImporterHost> host = new ImporterHost(); TestObserver* observer = new TestObserver(); host->SetObserver(observer); @@ -654,7 +660,7 @@ TEST_F(ImporterTest, Firefox2Importer) { ASSERT_TRUE(file_util::CopyDirectory(data_path, search_engine_path, false)); MessageLoop* loop = MessageLoop::current(); - scoped_refptr<ImporterHost> host = new ImporterHost(loop); + scoped_refptr<ImporterHost> host = new ImporterHost(); FirefoxObserver* observer = new FirefoxObserver(); host->SetObserver(observer); ProfileInfo profile_info; diff --git a/chrome/browser/importer/toolbar_importer.cc b/chrome/browser/importer/toolbar_importer.cc index 47a1cfd..50c6ae9 100644 --- a/chrome/browser/importer/toolbar_importer.cc +++ b/chrome/browser/importer/toolbar_importer.cc @@ -9,6 +9,7 @@ #include "app/l10n_util.h" #include "base/string_util.h" #include "base/rand_util.h" +#include "chrome/browser/chrome_thread.h" #include "chrome/browser/first_run.h" #include "chrome/browser/importer/importer_bridge.h" #include "chrome/browser/net/url_request_context_getter.h" @@ -113,14 +114,12 @@ void Toolbar5Importer::Cancel() { // If we are conducting network operations, post a message to the importer // thread for synchronization. - if (NULL != bridge_->delegate_loop_) { - if (bridge_->delegate_loop_ != MessageLoop::current()) { - bridge_->delegate_loop_->PostTask( - FROM_HERE, - NewRunnableMethod(this, &Toolbar5Importer::Cancel)); - } else { - EndImport(); - } + if (ChromeThread::CurrentlyOn(ChromeThread::UI)) { + EndImport(); + } else { + ChromeThread::PostTask( + ChromeThread::UI, FROM_HERE, + NewRunnableMethod(this, &Toolbar5Importer::Cancel)); } } |