| Index: chrome/browser/ui/browser.cc
|
| ===================================================================
|
| --- chrome/browser/ui/browser.cc (revision 148382)
|
| +++ chrome/browser/ui/browser.cc (working copy)
|
| @@ -244,6 +244,14 @@
|
| web_app::GetExtensionIdFromApplicationName(app_name));
|
| }
|
|
|
| +BrowserWindow* CreateBrowserWindow(Browser* browser) {
|
| +#if !defined(USE_ASH)
|
| + if (browser->is_type_panel())
|
| + return PanelManager::GetInstance()->CreatePanel(browser)->browser_window();
|
| +#endif
|
| + return BrowserWindow::CreateBrowserWindow(browser);
|
| +}
|
| +
|
| } // namespace
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| @@ -252,16 +260,28 @@
|
| Browser::CreateParams::CreateParams()
|
| : type(TYPE_TABBED),
|
| profile(NULL),
|
| + app_type(APP_TYPE_HOST),
|
| initial_show_state(ui::SHOW_STATE_DEFAULT),
|
| - is_session_restore(false) {
|
| + is_session_restore(false),
|
| + window(NULL) {
|
| }
|
|
|
| +Browser::CreateParams::CreateParams(Profile* profile)
|
| + : type(TYPE_TABBED),
|
| + profile(profile),
|
| + app_type(APP_TYPE_HOST),
|
| + initial_show_state(ui::SHOW_STATE_DEFAULT),
|
| + is_session_restore(false),
|
| + window(NULL) {
|
| +}
|
| +
|
| Browser::CreateParams::CreateParams(Type type, Profile* profile)
|
| : type(type),
|
| profile(profile),
|
| app_type(APP_TYPE_HOST),
|
| initial_show_state(ui::SHOW_STATE_DEFAULT),
|
| - is_session_restore(false) {
|
| + is_session_restore(false),
|
| + window(NULL) {
|
| }
|
|
|
| // static
|
| @@ -295,21 +315,23 @@
|
| ///////////////////////////////////////////////////////////////////////////////
|
| // Browser, Constructors, Creation, Showing:
|
|
|
| -Browser::Browser(Type type, Profile* profile)
|
| - : type_(type),
|
| - profile_(profile),
|
| +Browser::Browser(const CreateParams& params)
|
| + : type_(params.type),
|
| + profile_(params.profile),
|
| window_(NULL),
|
| ALLOW_THIS_IN_INITIALIZER_LIST(
|
| tab_strip_model_delegate_(
|
| new chrome::BrowserTabStripModelDelegate(this))),
|
| ALLOW_THIS_IN_INITIALIZER_LIST(
|
| tab_strip_model_(new TabStripModel(tab_strip_model_delegate_.get(),
|
| - profile))),
|
| - app_type_(APP_TYPE_HOST),
|
| + params.profile))),
|
| + app_name_(params.app_name),
|
| + app_type_(params.app_type),
|
| chrome_updater_factory_(this),
|
| cancel_download_confirmation_state_(NOT_PROMPTED),
|
| - initial_show_state_(ui::SHOW_STATE_DEFAULT),
|
| - is_session_restore_(false),
|
| + override_bounds_(params.initial_bounds),
|
| + initial_show_state_(params.initial_show_state),
|
| + is_session_restore_(params.is_session_restore),
|
| ALLOW_THIS_IN_INITIALIZER_LIST(
|
| unload_controller_(new chrome::UnloadController(this))),
|
| weak_factory_(this),
|
| @@ -330,6 +352,8 @@
|
| ALLOW_THIS_IN_INITIALIZER_LIST(
|
| command_controller_(new chrome::BrowserCommandController(this))),
|
| window_has_shown_(false) {
|
| + if (!app_name_.empty())
|
| + chrome::RegisterAppPrefs(app_name_, profile_);
|
| tab_strip_model_->AddObserver(this);
|
|
|
| toolbar_model_.reset(new ToolbarModel(toolbar_model_delegate_.get()));
|
| @@ -372,8 +396,53 @@
|
|
|
| UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_INIT);
|
|
|
| - FilePath profile_path = profile->GetPath();
|
| + FilePath profile_path = profile_->GetPath();
|
| ProfileMetrics::LogProfileLaunch(profile_path);
|
| +
|
| + window_ = params.window ? params.window : CreateBrowserWindow(this);
|
| +
|
| + // TODO(beng): move to BrowserFrameWin.
|
| +#if defined(OS_WIN) && !defined(USE_AURA)
|
| + // Set the app user model id for this application to that of the application
|
| + // name. See http://crbug.com/7028.
|
| + ui::win::SetAppIdForWindow(
|
| + is_app() && !is_type_panel() ?
|
| + ShellIntegration::GetAppModelIdForProfile(UTF8ToWide(app_name_),
|
| + profile_->GetPath()) :
|
| + ShellIntegration::GetChromiumModelIdForProfile(profile_->GetPath()),
|
| + window()->GetNativeWindow());
|
| +
|
| + if (is_type_panel()) {
|
| + ui::win::SetAppIconForWindow(ShellIntegration::GetChromiumIconPath(),
|
| + window()->GetNativeWindow());
|
| + }
|
| +#endif
|
| +
|
| + // Create the extension window controller before sending notifications.
|
| + extension_window_controller_.reset(
|
| + new BrowserExtensionWindowController(this));
|
| +
|
| + // TODO(beng): Move BrowserList::AddBrowser() to the end of this function and
|
| + // replace uses of this with BL's notifications.
|
| + content::NotificationService::current()->Notify(
|
| + chrome::NOTIFICATION_BROWSER_WINDOW_READY,
|
| + content::Source<Browser>(this),
|
| + content::NotificationService::NoDetails());
|
| +
|
| + // TODO(beng): move to ChromeBrowserMain:
|
| + PrefService* local_state = g_browser_process->local_state();
|
| + if (local_state && local_state->FindPreference(
|
| + prefs::kAutofillPersonalDataManagerFirstRun) &&
|
| + local_state->GetBoolean(prefs::kAutofillPersonalDataManagerFirstRun)) {
|
| + // Notify PDM that this is a first run.
|
| +#if defined(OS_WIN)
|
| + ImportAutofillDataWin(PersonalDataManagerFactory::GetForProfile(profile_));
|
| +#endif // defined(OS_WIN)
|
| + // Reset the preference so we don't call it again for subsequent windows.
|
| + local_state->ClearPref(prefs::kAutofillPersonalDataManagerFirstRun);
|
| + }
|
| +
|
| + fullscreen_controller_ = new FullscreenController(window_, profile_, this);
|
| }
|
|
|
| Browser::~Browser() {
|
| @@ -428,79 +497,6 @@
|
| select_file_dialog_->ListenerDestroyed();
|
| }
|
|
|
| -// static
|
| -Browser* Browser::Create(Profile* profile) {
|
| - Browser* browser = new Browser(TYPE_TABBED, profile);
|
| - browser->InitBrowserWindow();
|
| - return browser;
|
| -}
|
| -
|
| -// static
|
| -Browser* Browser::CreateWithParams(const CreateParams& params) {
|
| - if (!params.app_name.empty())
|
| - chrome::RegisterAppPrefs(params.app_name, params.profile);
|
| -
|
| - Browser* browser = new Browser(params.type, params.profile);
|
| - browser->app_name_ = params.app_name;
|
| - browser->app_type_ = params.app_type;
|
| - browser->set_override_bounds(params.initial_bounds);
|
| - browser->set_initial_show_state(params.initial_show_state);
|
| - browser->set_is_session_restore(params.is_session_restore);
|
| -
|
| - browser->InitBrowserWindow();
|
| - return browser;
|
| -}
|
| -
|
| -void Browser::InitBrowserWindow() {
|
| - DCHECK(!window_);
|
| -
|
| - window_ = CreateBrowserWindow();
|
| - fullscreen_controller_ = new FullscreenController(window_, profile_, this);
|
| -
|
| -#if defined(OS_WIN) && !defined(USE_AURA)
|
| - // Set the app user model id for this application to that of the application
|
| - // name. See http://crbug.com/7028.
|
| - ui::win::SetAppIdForWindow(
|
| - is_app() && !is_type_panel() ?
|
| - ShellIntegration::GetAppModelIdForProfile(UTF8ToWide(app_name_),
|
| - profile_->GetPath()) :
|
| - ShellIntegration::GetChromiumModelIdForProfile(profile_->GetPath()),
|
| - window()->GetNativeWindow());
|
| -
|
| - if (is_type_panel()) {
|
| - ui::win::SetAppIconForWindow(ShellIntegration::GetChromiumIconPath(),
|
| - window()->GetNativeWindow());
|
| - }
|
| -#endif
|
| -
|
| - // Create the extension window controller before sending notifications.
|
| - extension_window_controller_.reset(
|
| - new BrowserExtensionWindowController(this));
|
| -
|
| - content::NotificationService::current()->Notify(
|
| - chrome::NOTIFICATION_BROWSER_WINDOW_READY,
|
| - content::Source<Browser>(this),
|
| - content::NotificationService::NoDetails());
|
| -
|
| - PrefService* local_state = g_browser_process->local_state();
|
| - if (local_state && local_state->FindPreference(
|
| - prefs::kAutofillPersonalDataManagerFirstRun) &&
|
| - local_state->GetBoolean(prefs::kAutofillPersonalDataManagerFirstRun)) {
|
| - // Notify PDM that this is a first run.
|
| -#if defined(OS_WIN)
|
| - ImportAutofillDataWin(PersonalDataManagerFactory::GetForProfile(profile_));
|
| -#endif // defined(OS_WIN)
|
| - // Reset the preference so we don't call it again for subsequent windows.
|
| - local_state->ClearPref(prefs::kAutofillPersonalDataManagerFirstRun);
|
| - }
|
| -}
|
| -
|
| -void Browser::SetWindowForTesting(BrowserWindow* window) {
|
| - DCHECK(!window_);
|
| - window_ = window;
|
| - fullscreen_controller_ = new FullscreenController(window_, profile_, this);
|
| -}
|
| -
|
| ///////////////////////////////////////////////////////////////////////////////
|
| // Getters & Setters
|
|
|
| @@ -1219,17 +1215,6 @@
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| -// Browser, protected:
|
| -
|
| -BrowserWindow* Browser::CreateBrowserWindow() {
|
| -#if !defined(USE_ASH)
|
| - if (is_type_panel())
|
| - return PanelManager::GetInstance()->CreatePanel(this)->browser_window();
|
| -#endif
|
| - return BrowserWindow::CreateBrowserWindow(this);
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| // Browser, content::WebContentsDelegate implementation:
|
|
|
| WebContents* Browser::OpenURLFromTab(WebContents* source,
|
|
|