OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/startup/startup_browser_creator_impl.h" | 5 #include "chrome/browser/ui/startup/startup_browser_creator_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "apps/app_restore_service.h" | 10 #include "apps/app_restore_service.h" |
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 } | 244 } |
245 } | 245 } |
246 for (size_t i = 0; i < autolaunch_tabs.size(); ++i) { | 246 for (size_t i = 0; i < autolaunch_tabs.size(); ++i) { |
247 if (extension_service->IsInstalledApp(autolaunch_tabs.at(i).url)) { | 247 if (extension_service->IsInstalledApp(autolaunch_tabs.at(i).url)) { |
248 AppLauncherHandler::RecordAppLaunchType( | 248 AppLauncherHandler::RecordAppLaunchType( |
249 extension_misc::APP_LAUNCH_AUTOLAUNCH); | 249 extension_misc::APP_LAUNCH_AUTOLAUNCH); |
250 } | 250 } |
251 } | 251 } |
252 } | 252 } |
253 | 253 |
| 254 bool IsNewTabURL(Profile* profile, const GURL& url) { |
| 255 GURL ntp_url(chrome::kChromeUINewTabURL); |
| 256 return url == ntp_url || |
| 257 (url.is_empty() && profile->GetHomePage() == ntp_url); |
| 258 } |
| 259 |
| 260 void AddSyncPromoTab(Profile* profile, StartupTabs* tabs) { |
| 261 SyncPromoUI::DidShowSyncPromoAtStartup(profile); |
| 262 |
| 263 StartupTab sync_promo_tab; |
| 264 GURL continue_url; |
| 265 if (!SyncPromoUI::UseWebBasedSigninFlow()) |
| 266 continue_url = GURL(chrome::kChromeUINewTabURL); |
| 267 sync_promo_tab.url = SyncPromoUI::GetSyncPromoURL( |
| 268 continue_url, SyncPromoUI::SOURCE_START_PAGE, false); |
| 269 sync_promo_tab.is_pinned = false; |
| 270 tabs->insert(tabs->begin(), sync_promo_tab); |
| 271 |
| 272 // If the next URL is the NTP then remove it, effectively replacing the NTP |
| 273 // with the sync promo. This behavior is desired because completing or |
| 274 // skipping the sync promo causes a redirect to the NTP. |
| 275 if (tabs->size() > 1 && IsNewTabURL(profile, tabs->at(1).url)) |
| 276 tabs->erase(tabs->begin() + 1); |
| 277 } |
| 278 |
254 class WebContentsCloseObserver : public content::NotificationObserver { | 279 class WebContentsCloseObserver : public content::NotificationObserver { |
255 public: | 280 public: |
256 WebContentsCloseObserver() : contents_(NULL) {} | 281 WebContentsCloseObserver() : contents_(NULL) {} |
257 virtual ~WebContentsCloseObserver() {} | 282 virtual ~WebContentsCloseObserver() {} |
258 | 283 |
259 void SetContents(content::WebContents* contents) { | 284 void SetContents(content::WebContents* contents) { |
260 DCHECK(!contents_); | 285 DCHECK(!contents_); |
261 contents_ = contents; | 286 contents_ = contents; |
262 | 287 |
263 registrar_.Add(this, | 288 registrar_.Add(this, |
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
699 // Only use the set of urls specified in preferences if nothing was | 724 // Only use the set of urls specified in preferences if nothing was |
700 // specified on the command line. Filter out any urls that are to be | 725 // specified on the command line. Filter out any urls that are to be |
701 // restored by virtue of having been previously pinned. | 726 // restored by virtue of having been previously pinned. |
702 AddUniqueURLs(pref.urls, &tabs); | 727 AddUniqueURLs(pref.urls, &tabs); |
703 } else if (pref.type == SessionStartupPref::HOMEPAGE) { | 728 } else if (pref.type == SessionStartupPref::HOMEPAGE) { |
704 // If 'homepage' selected, either by the user or by a policy, we should | 729 // If 'homepage' selected, either by the user or by a policy, we should |
705 // have migrated them to another value. | 730 // have migrated them to another value. |
706 NOTREACHED() << "SessionStartupPref has deprecated type HOMEPAGE"; | 731 NOTREACHED() << "SessionStartupPref has deprecated type HOMEPAGE"; |
707 } | 732 } |
708 | 733 |
| 734 if (pref.type != SessionStartupPref::LAST && |
| 735 SyncPromoUI::ShouldShowSyncPromoAtStartup(profile_, is_first_run_)) { |
| 736 AddSyncPromoTab(profile_, &tabs); |
| 737 } |
| 738 |
709 if (tabs.empty()) | 739 if (tabs.empty()) |
710 return NULL; | 740 return NULL; |
711 | 741 |
712 Browser* browser = OpenTabsInBrowser(NULL, true, tabs); | 742 Browser* browser = OpenTabsInBrowser(NULL, true, tabs); |
713 return browser; | 743 return browser; |
714 } | 744 } |
715 | 745 |
716 void StartupBrowserCreatorImpl::AddUniqueURLs(const std::vector<GURL>& urls, | 746 void StartupBrowserCreatorImpl::AddUniqueURLs(const std::vector<GURL>& urls, |
717 StartupTabs* tabs) { | 747 StartupTabs* tabs) { |
718 size_t num_existing_tabs = tabs->size(); | 748 size_t num_existing_tabs = tabs->size(); |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
902 command_line_.HasSwitch(switches::kResetLocalPassphrase); | 932 command_line_.HasSwitch(switches::kResetLocalPassphrase); |
903 if ((is_first_run_ || has_reset_local_passphrase_switch) && | 933 if ((is_first_run_ || has_reset_local_passphrase_switch) && |
904 prefs->GetBoolean(prefs::kProfileIsManaged)) { | 934 prefs->GetBoolean(prefs::kProfileIsManaged)) { |
905 startup_urls->insert(startup_urls->begin(), | 935 startup_urls->insert(startup_urls->begin(), |
906 GURL(std::string(chrome::kChromeUISettingsURL) + | 936 GURL(std::string(chrome::kChromeUISettingsURL) + |
907 chrome::kManagedUserSettingsSubPage)); | 937 chrome::kManagedUserSettingsSubPage)); |
908 if (has_reset_local_passphrase_switch) { | 938 if (has_reset_local_passphrase_switch) { |
909 prefs->SetString(prefs::kManagedModeLocalPassphrase, ""); | 939 prefs->SetString(prefs::kManagedModeLocalPassphrase, ""); |
910 prefs->SetString(prefs::kManagedModeLocalSalt, ""); | 940 prefs->SetString(prefs::kManagedModeLocalSalt, ""); |
911 } | 941 } |
912 } else if (SyncPromoUI::ShouldShowSyncPromoAtStartup(profile_, | |
913 is_first_run_)) { | |
914 // If the sync promo page is going to be displayed then insert it at the | |
915 // front of the list. | |
916 GURL continue_url; | |
917 if (!SyncPromoUI::UseWebBasedSigninFlow()) { | |
918 continue_url = GURL(chrome::kChromeUINewTabURL); | |
919 } | |
920 | |
921 SyncPromoUI::DidShowSyncPromoAtStartup(profile_); | |
922 GURL old_url = (*startup_urls)[0]; | |
923 (*startup_urls)[0] = | |
924 SyncPromoUI::GetSyncPromoURL(continue_url, | |
925 SyncPromoUI::SOURCE_START_PAGE, | |
926 false); | |
927 | |
928 // An empty URL means to go to the home page. | |
929 if (old_url.is_empty() && | |
930 profile_->GetHomePage() == GURL(chrome::kChromeUINewTabURL)) { | |
931 old_url = GURL(chrome::kChromeUINewTabURL); | |
932 } | |
933 | |
934 // If the old URL is not the NTP then insert it right after the sync promo. | |
935 if (old_url != GURL(chrome::kChromeUINewTabURL)) | |
936 startup_urls->insert(startup_urls->begin() + 1, old_url); | |
937 } | 942 } |
938 } | 943 } |
939 | 944 |
940 #if !defined(OS_WIN) || defined(USE_AURA) | 945 #if !defined(OS_WIN) || defined(USE_AURA) |
941 // static | 946 // static |
942 bool StartupBrowserCreatorImpl::OpenStartupURLsInExistingBrowser( | 947 bool StartupBrowserCreatorImpl::OpenStartupURLsInExistingBrowser( |
943 Profile* profile, | 948 Profile* profile, |
944 const std::vector<GURL>& startup_urls) { | 949 const std::vector<GURL>& startup_urls) { |
945 return false; | 950 return false; |
946 } | 951 } |
947 #endif | 952 #endif |
OLD | NEW |