diff options
Diffstat (limited to 'chrome/browser/importer')
-rw-r--r-- | chrome/browser/importer/importer_host.cc | 15 | ||||
-rw-r--r-- | chrome/browser/importer/importer_host.h | 12 |
2 files changed, 21 insertions, 6 deletions
diff --git a/chrome/browser/importer/importer_host.cc b/chrome/browser/importer/importer_host.cc index 4003c76..1485dca 100644 --- a/chrome/browser/importer/importer_host.cc +++ b/chrome/browser/importer/importer_host.cc @@ -20,7 +20,6 @@ #include "chrome/browser/search_engines/template_url.h" #include "chrome/browser/search_engines/template_url_service.h" #include "chrome/browser/search_engines/template_url_service_factory.h" -#include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_tabstrip.h" #include "chrome/browser/ui/simple_message_box.h" #include "chrome/common/chrome_notification_types.h" @@ -40,7 +39,9 @@ ImporterHost::ImporterHost() importer_(NULL), headless_(false), parent_window_(NULL), + browser_(NULL), observer_(NULL) { + BrowserList::AddObserver(this); } void ImporterHost::ShowWarningDialog() { @@ -163,10 +164,8 @@ void ImporterHost::OnGoogleGAIACookieChecked(bool result) { chrome::MESSAGE_BOX_TYPE_INFORMATION); GURL url("https://accounts.google.com/ServiceLogin"); - DCHECK(profile_); - Browser* browser = browser::FindLastActiveWithProfile(profile_); - if (browser) - chrome::AddSelectedTabWithURL(browser, url, + if (browser_) + chrome::AddSelectedTabWithURL(browser_, url, content::PAGE_TRANSITION_TYPED); MessageLoop::current()->PostTask(FROM_HERE, base::Bind( @@ -184,6 +183,7 @@ void ImporterHost::Cancel() { } ImporterHost::~ImporterHost() { + BrowserList::RemoveObserver(this); if (NULL != importer_) importer_->Release(); @@ -266,3 +266,8 @@ void ImporterHost::Observe(int type, registrar_.RemoveAll(); InvokeTaskIfDone(); } + +void ImporterHost::OnBrowserRemoved(Browser* browser) { + if (browser_ == browser) + browser_ = NULL; +} diff --git a/chrome/browser/importer/importer_host.h b/chrome/browser/importer/importer_host.h index 18235eb..359f1d2 100644 --- a/chrome/browser/importer/importer_host.h +++ b/chrome/browser/importer/importer_host.h @@ -14,6 +14,7 @@ #include "chrome/browser/bookmarks/base_bookmark_model_observer.h" #include "chrome/browser/importer/importer_data_types.h" #include "chrome/browser/importer/profile_writer.h" +#include "chrome/browser/ui/browser_list.h" #include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_registrar.h" #include "ui/gfx/native_widget_types.h" @@ -31,7 +32,8 @@ class ImporterProgressObserver; // the import process is done, ImporterHost deletes itself. class ImporterHost : public base::RefCountedThreadSafe<ImporterHost>, public BaseBookmarkModelObserver, - public content::NotificationObserver { + public content::NotificationObserver, + public BrowserList::Observer { public: ImporterHost(); @@ -63,6 +65,8 @@ class ImporterHost : public base::RefCountedThreadSafe<ImporterHost>, parent_window_ = parent_window; } + void set_browser(Browser* browser) { browser_ = browser; } + // Starts the process of importing the settings and data depending on what the // user selected. // |source_profile| - importer profile to import. @@ -139,6 +143,9 @@ class ImporterHost : public base::RefCountedThreadSafe<ImporterHost>, const content::NotificationSource& source, const content::NotificationDetails& details) OVERRIDE; + // BrowserList::Observer + virtual void OnBrowserRemoved(Browser* browser) OVERRIDE; + // The task is the process of importing settings from other browsers. base::Closure task_; @@ -152,6 +159,9 @@ class ImporterHost : public base::RefCountedThreadSafe<ImporterHost>, // warning dialog). gfx::NativeWindow parent_window_; + // Used to add a new tab if we need the user to sign in. + Browser* browser_; + // The observer that we need to notify about changes in the import process. importer::ImporterProgressObserver* observer_; |