| Index: chrome/browser/app_controller_mac.mm | 
| diff --git a/chrome/browser/app_controller_mac.mm b/chrome/browser/app_controller_mac.mm | 
| index fcbdb232098bb328224702bd7b2a055bdacb538d..faf678960584b259f746d3f22288963b2e27f051 100644 | 
| --- a/chrome/browser/app_controller_mac.mm | 
| +++ b/chrome/browser/app_controller_mac.mm | 
| @@ -53,6 +53,12 @@ | 
| - (BOOL)shouldQuitWithInProgressDownloads; | 
| @end | 
|  | 
| +// True while AppController is calling Browser::OpenEmptyWindow(). We need a | 
| +// global flag here, analogue to BrowserInit::InProcessStartup() because | 
| +// otherwise the SessionService will try to restore sessions when we make a new | 
| +// window while there are no other active windows. | 
| +static bool g_is_opening_new_window = false; | 
| + | 
| @implementation AppController | 
|  | 
| // This method is called very early in application startup (ie, before | 
| @@ -489,7 +495,9 @@ | 
| switch (tag) { | 
| case IDC_NEW_TAB: | 
| case IDC_NEW_WINDOW: | 
| +      g_is_opening_new_window = true; | 
| Browser::OpenEmptyWindow(defaultProfile); | 
| +      g_is_opening_new_window = false; | 
| break; | 
| case IDC_NEW_INCOGNITO_WINDOW: | 
| Browser::OpenEmptyWindow(defaultProfile->GetOffTheRecordProfile()); | 
| @@ -527,7 +535,9 @@ | 
| return YES; | 
|  | 
| // Otherwise open a new window. | 
| +  g_is_opening_new_window = true; | 
| Browser::OpenEmptyWindow([self defaultProfile]); | 
| +  g_is_opening_new_window = false; | 
|  | 
| // We've handled the reopen event, so return NO to tell AppKit not | 
| // to do anything. | 
| @@ -729,3 +739,11 @@ void ShowOptionsWindow(OptionsPage page, | 
| Profile* profile) { | 
| NOTIMPLEMENTED(); | 
| } | 
| + | 
| +namespace app_controller_mac { | 
| + | 
| +bool IsOpeningNewWindow() { | 
| +  return g_is_opening_new_window; | 
| +} | 
| + | 
| +}  // namespace app_controller_mac | 
|  |