| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/browser.h" | 5 #include "chrome/browser/ui/browser.h" |
| 6 | 6 |
| 7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
| 8 #include <shellapi.h> | 8 #include <shellapi.h> |
| 9 #include <windows.h> | 9 #include <windows.h> |
| 10 #endif // OS_WIN | 10 #endif // OS_WIN |
| (...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 536 url = extension->GetFullLaunchURL(); | 536 url = extension->GetFullLaunchURL(); |
| 537 } | 537 } |
| 538 | 538 |
| 539 std::string app_name; | 539 std::string app_name; |
| 540 if (extension) | 540 if (extension) |
| 541 app_name = | 541 app_name = |
| 542 web_app::GenerateApplicationNameFromExtensionId(extension->id()); | 542 web_app::GenerateApplicationNameFromExtensionId(extension->id()); |
| 543 else | 543 else |
| 544 app_name = web_app::GenerateApplicationNameFromURL(url); | 544 app_name = web_app::GenerateApplicationNameFromURL(url); |
| 545 | 545 |
| 546 RegisterAppPrefs(app_name, profile); | 546 RegisterAppPrefs(app_name); |
| 547 | 547 |
| 548 bool as_panel = extension && (container == extension_misc::LAUNCH_PANEL); | 548 bool as_panel = extension && (container == extension_misc::LAUNCH_PANEL); |
| 549 | 549 |
| 550 gfx::Size window_size; | 550 gfx::Size window_size; |
| 551 if (extension) | 551 if (extension) |
| 552 window_size.SetSize(extension->launch_width(), | 552 window_size.SetSize(extension->launch_width(), |
| 553 extension->launch_height()); | 553 extension->launch_height()); |
| 554 | 554 |
| 555 Browser* browser = Browser::CreateForApp(app_name, window_size, profile, | 555 Browser* browser = Browser::CreateForApp(app_name, window_size, profile, |
| 556 as_panel); | 556 as_panel); |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 732 // In playback/record mode we always fix the size of the browser and | 732 // In playback/record mode we always fix the size of the browser and |
| 733 // move it to (0,0). The reason for this is two reasons: First we want | 733 // move it to (0,0). The reason for this is two reasons: First we want |
| 734 // resize/moves in the playback to still work, and Second we want | 734 // resize/moves in the playback to still work, and Second we want |
| 735 // playbacks to work (as much as possible) on machines w/ different | 735 // playbacks to work (as much as possible) on machines w/ different |
| 736 // screen sizes. | 736 // screen sizes. |
| 737 return gfx::Rect(0, 0, 800, 600); | 737 return gfx::Rect(0, 0, 800, 600); |
| 738 } | 738 } |
| 739 | 739 |
| 740 gfx::Rect restored_bounds = override_bounds_; | 740 gfx::Rect restored_bounds = override_bounds_; |
| 741 bool maximized; | 741 bool maximized; |
| 742 WindowSizer::GetBrowserWindowBounds(app_name_, restored_bounds, this, | 742 WindowSizer::GetBrowserWindowBounds(app_name_, restored_bounds, NULL, |
| 743 &restored_bounds, &maximized); | 743 &restored_bounds, &maximized); |
| 744 return restored_bounds; | 744 return restored_bounds; |
| 745 } | 745 } |
| 746 | 746 |
| 747 // TODO(beng): obtain maximized state some other way so we don't need to go | 747 // TODO(beng): obtain maximized state some other way so we don't need to go |
| 748 // through all this hassle. | 748 // through all this hassle. |
| 749 bool Browser::GetSavedMaximizedState() const { | 749 bool Browser::GetSavedMaximizedState() const { |
| 750 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kStartMaximized)) | 750 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kStartMaximized)) |
| 751 return true; | 751 return true; |
| 752 | 752 |
| 753 if (maximized_state_ == MAXIMIZED_STATE_MAXIMIZED) | 753 if (maximized_state_ == MAXIMIZED_STATE_MAXIMIZED) |
| 754 return true; | 754 return true; |
| 755 if (maximized_state_ == MAXIMIZED_STATE_UNMAXIMIZED) | 755 if (maximized_state_ == MAXIMIZED_STATE_UNMAXIMIZED) |
| 756 return false; | 756 return false; |
| 757 | 757 |
| 758 // An explicit maximized state was not set. Query the window sizer. | 758 // An explicit maximized state was not set. Query the window sizer. |
| 759 gfx::Rect restored_bounds; | 759 gfx::Rect restored_bounds; |
| 760 bool maximized = false; | 760 bool maximized = false; |
| 761 WindowSizer::GetBrowserWindowBounds(app_name_, restored_bounds, this, | 761 WindowSizer::GetBrowserWindowBounds(app_name_, restored_bounds, NULL, |
| 762 &restored_bounds, &maximized); | 762 &restored_bounds, &maximized); |
| 763 return maximized; | 763 return maximized; |
| 764 } | 764 } |
| 765 | 765 |
| 766 SkBitmap Browser::GetCurrentPageIcon() const { | 766 SkBitmap Browser::GetCurrentPageIcon() const { |
| 767 TabContents* contents = GetSelectedTabContents(); | 767 TabContents* contents = GetSelectedTabContents(); |
| 768 // |contents| can be NULL since GetCurrentPageIcon() is called by the window | 768 // |contents| can be NULL since GetCurrentPageIcon() is called by the window |
| 769 // during the window's creation (before tabs have been added). | 769 // during the window's creation (before tabs have been added). |
| 770 return contents ? contents->GetFavIcon() : SkBitmap(); | 770 return contents ? contents->GetFavIcon() : SkBitmap(); |
| 771 } | 771 } |
| (...skipping 1195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1967 const PrefService::Preference* home_page_is_new_tab_page_pref = | 1967 const PrefService::Preference* home_page_is_new_tab_page_pref = |
| 1968 prefs->FindPreference(prefs::kHomePageIsNewTabPage); | 1968 prefs->FindPreference(prefs::kHomePageIsNewTabPage); |
| 1969 if (home_page_is_new_tab_page_pref && | 1969 if (home_page_is_new_tab_page_pref && |
| 1970 !home_page_is_new_tab_page_pref->IsManaged() && | 1970 !home_page_is_new_tab_page_pref->IsManaged() && |
| 1971 !prefs->HasPrefPath(prefs::kHomePageIsNewTabPage)) | 1971 !prefs->HasPrefPath(prefs::kHomePageIsNewTabPage)) |
| 1972 prefs->SetBoolean(prefs::kHomePageIsNewTabPage, false); | 1972 prefs->SetBoolean(prefs::kHomePageIsNewTabPage, false); |
| 1973 } | 1973 } |
| 1974 | 1974 |
| 1975 // static | 1975 // static |
| 1976 void Browser::RegisterPrefs(PrefService* prefs) { | 1976 void Browser::RegisterPrefs(PrefService* prefs) { |
| 1977 prefs->RegisterDictionaryPref(prefs::kBrowserWindowPlacement); |
| 1977 prefs->RegisterIntegerPref(prefs::kOptionsWindowLastTabIndex, 0); | 1978 prefs->RegisterIntegerPref(prefs::kOptionsWindowLastTabIndex, 0); |
| 1979 prefs->RegisterIntegerPref(prefs::kDevToolsSplitLocation, -1); |
| 1978 prefs->RegisterDictionaryPref(prefs::kPreferencesWindowPlacement); | 1980 prefs->RegisterDictionaryPref(prefs::kPreferencesWindowPlacement); |
| 1979 prefs->RegisterIntegerPref(prefs::kExtensionSidebarWidth, -1); | 1981 prefs->RegisterIntegerPref(prefs::kExtensionSidebarWidth, -1); |
| 1980 prefs->RegisterIntegerPref(prefs::kMultipleProfilePrefMigration, 0); | |
| 1981 // Educated guess: Chrome has a bundled Flash version supporting | 1982 // Educated guess: Chrome has a bundled Flash version supporting |
| 1982 // clearing LSO data, Chromium hasn't. | 1983 // clearing LSO data, Chromium hasn't. |
| 1983 #if defined(GOOGLE_CHROME_BUILD) | 1984 #if defined(GOOGLE_CHROME_BUILD) |
| 1984 prefs->RegisterBooleanPref(prefs::kClearPluginLSODataEnabled, true); | 1985 prefs->RegisterBooleanPref(prefs::kClearPluginLSODataEnabled, true); |
| 1985 #else | 1986 #else |
| 1986 prefs->RegisterBooleanPref(prefs::kClearPluginLSODataEnabled, false); | 1987 prefs->RegisterBooleanPref(prefs::kClearPluginLSODataEnabled, false); |
| 1987 #endif | 1988 #endif |
| 1988 } | 1989 } |
| 1989 | 1990 |
| 1990 // static | 1991 // static |
| (...skipping 27 matching lines...) Expand all Loading... |
| 2018 prefs->RegisterBooleanPref(prefs::kShowOmniboxSearchHint, true); | 2019 prefs->RegisterBooleanPref(prefs::kShowOmniboxSearchHint, true); |
| 2019 prefs->RegisterBooleanPref(prefs::kWebAppCreateOnDesktop, true); | 2020 prefs->RegisterBooleanPref(prefs::kWebAppCreateOnDesktop, true); |
| 2020 prefs->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true); | 2021 prefs->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true); |
| 2021 prefs->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, true); | 2022 prefs->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, true); |
| 2022 prefs->RegisterBooleanPref(prefs::kUseVerticalTabs, false); | 2023 prefs->RegisterBooleanPref(prefs::kUseVerticalTabs, false); |
| 2023 prefs->RegisterBooleanPref(prefs::kEnableTranslate, true); | 2024 prefs->RegisterBooleanPref(prefs::kEnableTranslate, true); |
| 2024 prefs->RegisterBooleanPref(prefs::kRemotingHasSetupCompleted, false); | 2025 prefs->RegisterBooleanPref(prefs::kRemotingHasSetupCompleted, false); |
| 2025 prefs->RegisterStringPref(prefs::kCloudPrintEmail, std::string()); | 2026 prefs->RegisterStringPref(prefs::kCloudPrintEmail, std::string()); |
| 2026 prefs->RegisterBooleanPref(prefs::kDevToolsDisabled, false); | 2027 prefs->RegisterBooleanPref(prefs::kDevToolsDisabled, false); |
| 2027 prefs->RegisterRealPref(prefs::kDefaultZoomLevel, 0.0); | 2028 prefs->RegisterRealPref(prefs::kDefaultZoomLevel, 0.0); |
| 2028 prefs->RegisterIntegerPref(prefs::kDevToolsSplitLocation, -1); | 2029 prefs->RegisterIntegerPref(prefs::kMultipleProfilePrefMigration, 0); |
| 2029 prefs->RegisterDictionaryPref(prefs::kBrowserWindowPlacement); | |
| 2030 // We need to register the type of this preference in order to query | 2030 // We need to register the type of this preference in order to query |
| 2031 // it even though it's only typically controlled via policy. | 2031 // it even though it's only typically controlled via policy. |
| 2032 prefs->RegisterBooleanPref(prefs::kDisable3DAPIs, false); | 2032 prefs->RegisterBooleanPref(prefs::kDisable3DAPIs, false); |
| 2033 } | 2033 } |
| 2034 | 2034 |
| 2035 // static | 2035 // static |
| 2036 bool Browser::RunUnloadEventsHelper(TabContents* contents) { | 2036 bool Browser::RunUnloadEventsHelper(TabContents* contents) { |
| 2037 // If the TabContents is not connected yet, then there's no unload | 2037 // If the TabContents is not connected yet, then there's no unload |
| 2038 // handler we can fire even if the TabContents has an unload listener. | 2038 // handler we can fire even if the TabContents has an unload listener. |
| 2039 // One case where we hit this is in a tab that has an infinite loop | 2039 // One case where we hit this is in a tab that has an infinite loop |
| (...skipping 917 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2957 return false; | 2957 return false; |
| 2958 } | 2958 } |
| 2959 | 2959 |
| 2960 bool Browser::IsApplication() const { | 2960 bool Browser::IsApplication() const { |
| 2961 return (type_ & TYPE_APP) != 0; | 2961 return (type_ & TYPE_APP) != 0; |
| 2962 } | 2962 } |
| 2963 | 2963 |
| 2964 void Browser::ConvertContentsToApplication(TabContents* contents) { | 2964 void Browser::ConvertContentsToApplication(TabContents* contents) { |
| 2965 const GURL& url = contents->controller().GetActiveEntry()->url(); | 2965 const GURL& url = contents->controller().GetActiveEntry()->url(); |
| 2966 std::string app_name = web_app::GenerateApplicationNameFromURL(url); | 2966 std::string app_name = web_app::GenerateApplicationNameFromURL(url); |
| 2967 RegisterAppPrefs(app_name, contents->profile()); | 2967 RegisterAppPrefs(app_name); |
| 2968 | 2968 |
| 2969 DetachContents(contents); | 2969 DetachContents(contents); |
| 2970 Browser* app_browser = Browser::CreateForApp( | 2970 Browser* app_browser = Browser::CreateForApp( |
| 2971 app_name, gfx::Size(), profile_, false); | 2971 app_name, gfx::Size(), profile_, false); |
| 2972 TabContentsWrapper* wrapper = new TabContentsWrapper(contents); | 2972 TabContentsWrapper* wrapper = new TabContentsWrapper(contents); |
| 2973 app_browser->tabstrip_model()->AppendTabContents(wrapper, true); | 2973 app_browser->tabstrip_model()->AppendTabContents(wrapper, true); |
| 2974 | 2974 |
| 2975 contents->GetMutableRendererPrefs()->can_accept_load_drops = false; | 2975 contents->GetMutableRendererPrefs()->can_accept_load_drops = false; |
| 2976 contents->render_view_host()->SyncRendererPrefs(); | 2976 contents->render_view_host()->SyncRendererPrefs(); |
| 2977 app_browser->window()->Show(); | 2977 app_browser->window()->Show(); |
| (...skipping 1133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4111 // us). Avoid that by passing in false so that the call to | 4111 // us). Avoid that by passing in false so that the call to |
| 4112 // ProcessPendingTabs is delayed. | 4112 // ProcessPendingTabs is delayed. |
| 4113 ClearUnloadState(contents->tab_contents(), false); | 4113 ClearUnloadState(contents->tab_contents(), false); |
| 4114 } | 4114 } |
| 4115 | 4115 |
| 4116 registrar_.Remove(this, NotificationType::TAB_CONTENTS_DISCONNECTED, | 4116 registrar_.Remove(this, NotificationType::TAB_CONTENTS_DISCONNECTED, |
| 4117 Source<TabContentsWrapper>(contents)); | 4117 Source<TabContentsWrapper>(contents)); |
| 4118 } | 4118 } |
| 4119 | 4119 |
| 4120 // static | 4120 // static |
| 4121 void Browser::RegisterAppPrefs(const std::string& app_name, Profile* profile) { | 4121 void Browser::RegisterAppPrefs(const std::string& app_name) { |
| 4122 // A set of apps that we've already started. | 4122 // A set of apps that we've already started. |
| 4123 static std::set<std::string>* g_app_names = NULL; | 4123 static std::set<std::string>* g_app_names = NULL; |
| 4124 | 4124 |
| 4125 if (!g_app_names) | 4125 if (!g_app_names) |
| 4126 g_app_names = new std::set<std::string>; | 4126 g_app_names = new std::set<std::string>; |
| 4127 | 4127 |
| 4128 // Only register once for each app name. | 4128 // Only register once for each app name. |
| 4129 if (g_app_names->find(app_name) != g_app_names->end()) | 4129 if (g_app_names->find(app_name) != g_app_names->end()) |
| 4130 return; | 4130 return; |
| 4131 g_app_names->insert(app_name); | 4131 g_app_names->insert(app_name); |
| 4132 | 4132 |
| 4133 // We need to register the window position pref. | 4133 // We need to register the window position pref. |
| 4134 std::string window_pref(prefs::kBrowserWindowPlacement); | 4134 std::string window_pref(prefs::kBrowserWindowPlacement); |
| 4135 window_pref.append("_"); | 4135 window_pref.append("_"); |
| 4136 window_pref.append(app_name); | 4136 window_pref.append(app_name); |
| 4137 profile->GetPrefs()->RegisterDictionaryPref(window_pref.c_str()); | 4137 PrefService* prefs = g_browser_process->local_state(); |
| 4138 DCHECK(prefs); |
| 4139 |
| 4140 prefs->RegisterDictionaryPref(window_pref.c_str()); |
| 4138 } | 4141 } |
| 4139 | 4142 |
| 4140 void Browser::TabRestoreServiceChanged(TabRestoreService* service) { | 4143 void Browser::TabRestoreServiceChanged(TabRestoreService* service) { |
| 4141 command_updater_.UpdateCommandEnabled(IDC_RESTORE_TAB, | 4144 command_updater_.UpdateCommandEnabled(IDC_RESTORE_TAB, |
| 4142 !service->entries().empty()); | 4145 !service->entries().empty()); |
| 4143 } | 4146 } |
| 4144 | 4147 |
| 4145 void Browser::TabRestoreServiceDestroyed(TabRestoreService* service) { | 4148 void Browser::TabRestoreServiceDestroyed(TabRestoreService* service) { |
| 4146 if (!tab_restore_service_) | 4149 if (!tab_restore_service_) |
| 4147 return; | 4150 return; |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4259 // The page transition below is only for the purpose of inserting the tab. | 4262 // The page transition below is only for the purpose of inserting the tab. |
| 4260 browser->AddTab(view_source_contents, PageTransition::LINK); | 4263 browser->AddTab(view_source_contents, PageTransition::LINK); |
| 4261 } | 4264 } |
| 4262 | 4265 |
| 4263 if (profile_->HasSessionService()) { | 4266 if (profile_->HasSessionService()) { |
| 4264 SessionService* session_service = profile_->GetSessionService(); | 4267 SessionService* session_service = profile_->GetSessionService(); |
| 4265 if (session_service) | 4268 if (session_service) |
| 4266 session_service->TabRestored(&view_source_contents->controller(), false); | 4269 session_service->TabRestored(&view_source_contents->controller(), false); |
| 4267 } | 4270 } |
| 4268 } | 4271 } |
| OLD | NEW |