summaryrefslogtreecommitdiffstats
path: root/chrome/browser/importer
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-03 02:27:01 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-03 02:27:01 +0000
commit0d3dc8e2804b0adc4f572944db027929e2b5af5a (patch)
treeefe4a3ecde226002698017cceba2952b8979a66f /chrome/browser/importer
parent8dc291a4dbeed088fbdc36115b250c5f83d3edde (diff)
downloadchromium_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.cc21
-rw-r--r--chrome/browser/importer/importer.h8
-rw-r--r--chrome/browser/importer/importer_bridge.cc67
-rw-r--r--chrome/browser/importer/importer_bridge.h6
-rw-r--r--chrome/browser/importer/importer_unittest.cc12
-rw-r--r--chrome/browser/importer/toolbar_importer.cc15
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));
}
}