Index: chrome/browser/ui/browser_init.cc |
diff --git a/chrome/browser/ui/browser_init.cc b/chrome/browser/ui/browser_init.cc |
index 237de737150747e80c53f4be9d10b8908af6fd50..f48144295483a722cb0bab806d701f75c87f0379 100644 |
--- a/chrome/browser/ui/browser_init.cc |
+++ b/chrome/browser/ui/browser_init.cc |
@@ -58,6 +58,7 @@ |
#include "chrome/browser/ui/browser_navigator.h" |
#include "chrome/browser/ui/browser_window.h" |
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
+#include "chrome/browser/ui/webui/sync_promo_ui.h" |
#include "chrome/common/chrome_constants.h" |
#include "chrome/common/chrome_paths.h" |
#include "chrome/common/chrome_result_codes.h" |
@@ -560,9 +561,10 @@ bool BrowserInit::InProcessStartup() { |
bool BrowserInit::LaunchBrowser(const CommandLine& command_line, |
Profile* profile, |
const FilePath& cur_dir, |
- bool process_startup, |
+ IsProcessStartup process_startup, |
+ IsFirstRun is_first_run, |
int* return_code) { |
- in_startup = process_startup; |
+ in_startup = process_startup == IS_PROCESS_STARTUP; |
DCHECK(profile); |
// Continue with the incognito profile from here on if Incognito mode |
@@ -574,7 +576,7 @@ bool BrowserInit::LaunchBrowser(const CommandLine& command_line, |
<< "browser session."; |
} |
- BrowserInit::LaunchWithProfile lwp(cur_dir, command_line, this); |
+ BrowserInit::LaunchWithProfile lwp(cur_dir, command_line, this, is_first_run); |
std::vector<GURL> urls_to_launch = BrowserInit::GetURLsFromCommandLine( |
command_line, cur_dir, profile); |
bool launched = lwp.Launch(profile, urls_to_launch, process_startup); |
@@ -644,21 +646,25 @@ BrowserInit::LaunchWithProfile::Tab::~Tab() {} |
BrowserInit::LaunchWithProfile::LaunchWithProfile( |
const FilePath& cur_dir, |
- const CommandLine& command_line) |
+ const CommandLine& command_line, |
+ IsFirstRun is_first_run) |
: cur_dir_(cur_dir), |
command_line_(command_line), |
profile_(NULL), |
- browser_init_(NULL) { |
+ browser_init_(NULL), |
+ is_first_run_(is_first_run) { |
} |
BrowserInit::LaunchWithProfile::LaunchWithProfile( |
const FilePath& cur_dir, |
const CommandLine& command_line, |
- BrowserInit* browser_init) |
+ BrowserInit* browser_init, |
+ IsFirstRun is_first_run) |
: cur_dir_(cur_dir), |
command_line_(command_line), |
profile_(NULL), |
- browser_init_(browser_init) { |
+ browser_init_(browser_init), |
+ is_first_run_(is_first_run) { |
} |
BrowserInit::LaunchWithProfile::~LaunchWithProfile() { |
@@ -1241,6 +1247,7 @@ void BrowserInit::LaunchWithProfile::AddStartupURLs( |
// and nothing else. |
if (!startup_urls->empty()) |
return; |
+ |
// If we have urls specified by the first run master preferences use them |
// and nothing else. |
if (browser_init_) { |
@@ -1249,7 +1256,13 @@ void BrowserInit::LaunchWithProfile::AddStartupURLs( |
while (it != browser_init_->first_run_tabs_.end()) { |
// Replace magic names for the actual urls. |
if (it->host() == "new_tab_page") { |
- startup_urls->push_back(GURL(chrome::kChromeUINewTabURL)); |
+ if (SyncPromoUI::ShouldShowSyncPromoAtStartup(profile_, |
+ is_first_run_ == IS_FIRST_RUN)) { |
+ SyncPromoUI::DidShowSyncPromoAtStartup(profile_); |
+ startup_urls->push_back(GURL(chrome::kChromeUISyncPromoURL)); |
+ } else { |
+ startup_urls->push_back(GURL(chrome::kChromeUINewTabURL)); |
+ } |
} else if (it->host() == "welcome_page") { |
startup_urls->push_back(GetWelcomePageURL()); |
} else { |
@@ -1265,11 +1278,18 @@ void BrowserInit::LaunchWithProfile::AddStartupURLs( |
// Otherwise open at least the new tab page (and the welcome page, if this |
// is the first time the browser is being started), or the set of URLs |
// specified on the command line. |
- startup_urls->push_back(GURL()); // New tab page. |
+ if (SyncPromoUI::ShouldShowSyncPromoAtStartup(profile_, |
+ is_first_run_ == IS_FIRST_RUN)) { |
+ SyncPromoUI::DidShowSyncPromoAtStartup(profile_); |
+ startup_urls->push_back(GURL(chrome::kChromeUISyncPromoURL)); |
+ } else { |
+ startup_urls->push_back(GURL()); // New tab page. |
+ } |
PrefService* prefs = g_browser_process->local_state(); |
if (prefs->FindPreference(prefs::kShouldShowWelcomePage) && |
prefs->GetBoolean(prefs::kShouldShowWelcomePage)) { |
// Reset the preference so we don't show the welcome page next time. |
+ startup_urls->push_back(GURL()); // New tab page. |
sky
2011/10/04 20:13:23
Might 1286 have already added this?
sail
2011/10/04 20:56:24
Ouch, good catch. Don't know how that line got the
|
prefs->ClearPref(prefs::kShouldShowWelcomePage); |
startup_urls->push_back(GetWelcomePageURL()); |
} |
@@ -1281,7 +1301,7 @@ void BrowserInit::LaunchWithProfile::CheckDefaultBrowser(Profile* profile) { |
// - this is the first launch after the first run flow. |
// - There is a policy in control of this setting. |
if (!profile->GetPrefs()->GetBoolean(prefs::kCheckDefaultBrowser) || |
- FirstRun::IsChromeFirstRun()) { |
+ is_first_run_ == IS_FIRST_RUN) { |
return; |
} |
if (g_browser_process->local_state()->IsManagedPreference( |
@@ -1487,8 +1507,12 @@ bool BrowserInit::ProcessCmdLineImpl(const CommandLine& command_line, |
// If we don't want to launch a new browser window or tab (in the case |
// of an automation request), we are done here. |
if (!silent_launch) { |
- return browser_init->LaunchBrowser( |
- command_line, profile, cur_dir, process_startup, return_code); |
+ IsProcessStartup is_process_startup = process_startup ? |
+ IS_PROCESS_STARTUP : IS_NOT_PROCESS_STARTUP; |
+ IsFirstRun is_first_run = FirstRun::IsChromeFirstRun() ? |
+ IS_FIRST_RUN : IS_NOT_FIRST_RUN; |
+ return browser_init->LaunchBrowser(command_line, profile, cur_dir, |
+ is_process_startup, is_first_run, return_code); |
} |
return true; |
} |