| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/ash/chrome_new_window_delegate.h" | 5 #include "chrome/browser/ui/ash/chrome_new_window_delegate.h" |
| 6 | 6 |
| 7 #include "ash/wm/window_util.h" | 7 #include "ash/wm/window_util.h" |
| 8 #include "chrome/browser/profiles/profile_manager.h" | 8 #include "chrome/browser/profiles/profile_manager.h" |
| 9 #include "chrome/browser/sessions/tab_restore_service_factory.h" | 9 #include "chrome/browser/sessions/tab_restore_service_factory.h" |
| 10 #include "chrome/browser/ui/ash/chrome_shell_delegate.h" | 10 #include "chrome/browser/ui/ash/chrome_shell_delegate.h" |
| 11 #include "chrome/browser/ui/browser.h" | 11 #include "chrome/browser/ui/browser.h" |
| 12 #include "chrome/browser/ui/browser_commands.h" | 12 #include "chrome/browser/ui/browser_commands.h" |
| 13 #include "chrome/browser/ui/browser_finder.h" | 13 #include "chrome/browser/ui/browser_finder.h" |
| 14 #include "chrome/browser/ui/browser_window.h" | 14 #include "chrome/browser/ui/browser_window.h" |
| 15 #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" | 15 #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" |
| 16 #include "components/sessions/core/tab_restore_service.h" | 16 #include "components/sessions/core/tab_restore_service.h" |
| 17 #include "components/sessions/core/tab_restore_service_observer.h" | 17 #include "components/sessions/core/tab_restore_service_observer.h" |
| 18 | 18 |
| 19 namespace { | 19 namespace { |
| 20 | 20 |
| 21 void RestoreTabUsingProfile(Profile* profile) { | 21 void RestoreTabUsingProfile(Profile* profile) { |
| 22 TabRestoreService* service = TabRestoreServiceFactory::GetForProfile(profile); | 22 sessions::TabRestoreService* service = |
| 23 TabRestoreServiceFactory::GetForProfile(profile); |
| 23 service->RestoreMostRecentEntry(NULL, chrome::HOST_DESKTOP_TYPE_ASH); | 24 service->RestoreMostRecentEntry(NULL, chrome::HOST_DESKTOP_TYPE_ASH); |
| 24 } | 25 } |
| 25 | 26 |
| 26 // Returns the browser for the active window, if any. | 27 // Returns the browser for the active window, if any. |
| 27 Browser* GetBrowserForActiveWindow() { | 28 Browser* GetBrowserForActiveWindow() { |
| 28 return chrome::FindBrowserWithWindow(ash::wm::GetActiveWindow()); | 29 return chrome::FindBrowserWithWindow(ash::wm::GetActiveWindow()); |
| 29 } | 30 } |
| 30 | 31 |
| 31 } // namespace | 32 } // namespace |
| 32 | 33 |
| 33 ChromeNewWindowDelegate::ChromeNewWindowDelegate() {} | 34 ChromeNewWindowDelegate::ChromeNewWindowDelegate() {} |
| 34 ChromeNewWindowDelegate::~ChromeNewWindowDelegate() {} | 35 ChromeNewWindowDelegate::~ChromeNewWindowDelegate() {} |
| 35 | 36 |
| 36 // TabRestoreHelper is used to restore a tab. In particular when the user | 37 // TabRestoreHelper is used to restore a tab. In particular when the user |
| 37 // attempts to a restore a tab if the TabRestoreService hasn't finished loading | 38 // attempts to a restore a tab if the TabRestoreService hasn't finished loading |
| 38 // this waits for it. Once the TabRestoreService finishes loading the tab is | 39 // this waits for it. Once the TabRestoreService finishes loading the tab is |
| 39 // restored. | 40 // restored. |
| 40 class ChromeNewWindowDelegate::TabRestoreHelper | 41 class ChromeNewWindowDelegate::TabRestoreHelper |
| 41 : public TabRestoreServiceObserver { | 42 : public sessions::TabRestoreServiceObserver { |
| 42 public: | 43 public: |
| 43 TabRestoreHelper(ChromeNewWindowDelegate* delegate, | 44 TabRestoreHelper(ChromeNewWindowDelegate* delegate, |
| 44 Profile* profile, | 45 Profile* profile, |
| 45 TabRestoreService* service) | 46 sessions::TabRestoreService* service) |
| 46 : delegate_(delegate), | 47 : delegate_(delegate), profile_(profile), tab_restore_service_(service) { |
| 47 profile_(profile), | |
| 48 tab_restore_service_(service) { | |
| 49 tab_restore_service_->AddObserver(this); | 48 tab_restore_service_->AddObserver(this); |
| 50 } | 49 } |
| 51 | 50 |
| 52 ~TabRestoreHelper() override { tab_restore_service_->RemoveObserver(this); } | 51 ~TabRestoreHelper() override { tab_restore_service_->RemoveObserver(this); } |
| 53 | 52 |
| 54 TabRestoreService* tab_restore_service() { return tab_restore_service_; } | 53 sessions::TabRestoreService* tab_restore_service() { |
| 54 return tab_restore_service_; |
| 55 } |
| 55 | 56 |
| 56 void TabRestoreServiceChanged(TabRestoreService* service) override {} | 57 void TabRestoreServiceChanged(sessions::TabRestoreService* service) override { |
| 58 } |
| 57 | 59 |
| 58 void TabRestoreServiceDestroyed(TabRestoreService* service) override { | 60 void TabRestoreServiceDestroyed( |
| 61 sessions::TabRestoreService* service) override { |
| 59 // This destroys us. | 62 // This destroys us. |
| 60 delegate_->tab_restore_helper_.reset(); | 63 delegate_->tab_restore_helper_.reset(); |
| 61 } | 64 } |
| 62 | 65 |
| 63 void TabRestoreServiceLoaded(TabRestoreService* service) override { | 66 void TabRestoreServiceLoaded(sessions::TabRestoreService* service) override { |
| 64 RestoreTabUsingProfile(profile_); | 67 RestoreTabUsingProfile(profile_); |
| 65 // This destroys us. | 68 // This destroys us. |
| 66 delegate_->tab_restore_helper_.reset(); | 69 delegate_->tab_restore_helper_.reset(); |
| 67 } | 70 } |
| 68 | 71 |
| 69 private: | 72 private: |
| 70 ChromeNewWindowDelegate* delegate_; | 73 ChromeNewWindowDelegate* delegate_; |
| 71 Profile* profile_; | 74 Profile* profile_; |
| 72 TabRestoreService* tab_restore_service_; | 75 sessions::TabRestoreService* tab_restore_service_; |
| 73 | 76 |
| 74 DISALLOW_COPY_AND_ASSIGN(TabRestoreHelper); | 77 DISALLOW_COPY_AND_ASSIGN(TabRestoreHelper); |
| 75 }; | 78 }; |
| 76 | 79 |
| 77 void ChromeNewWindowDelegate::NewTab() { | 80 void ChromeNewWindowDelegate::NewTab() { |
| 78 Browser* browser = GetBrowserForActiveWindow(); | 81 Browser* browser = GetBrowserForActiveWindow(); |
| 79 if (browser && browser->is_type_tabbed()) { | 82 if (browser && browser->is_type_tabbed()) { |
| 80 chrome::NewTab(browser); | 83 chrome::NewTab(browser); |
| 81 return; | 84 return; |
| 82 } | 85 } |
| (...skipping 21 matching lines...) Expand all Loading... |
| 104 DCHECK(!tab_restore_helper_->tab_restore_service()->IsLoaded()); | 107 DCHECK(!tab_restore_helper_->tab_restore_service()->IsLoaded()); |
| 105 return; | 108 return; |
| 106 } | 109 } |
| 107 | 110 |
| 108 Browser* browser = GetBrowserForActiveWindow(); | 111 Browser* browser = GetBrowserForActiveWindow(); |
| 109 Profile* profile = browser ? browser->profile() : NULL; | 112 Profile* profile = browser ? browser->profile() : NULL; |
| 110 if (!profile) | 113 if (!profile) |
| 111 profile = ProfileManager::GetActiveUserProfile(); | 114 profile = ProfileManager::GetActiveUserProfile(); |
| 112 if (profile->IsOffTheRecord()) | 115 if (profile->IsOffTheRecord()) |
| 113 return; | 116 return; |
| 114 TabRestoreService* service = | 117 sessions::TabRestoreService* service = |
| 115 TabRestoreServiceFactory::GetForProfile(profile); | 118 TabRestoreServiceFactory::GetForProfile(profile); |
| 116 if (!service) | 119 if (!service) |
| 117 return; | 120 return; |
| 118 | 121 |
| 119 if (service->IsLoaded()) { | 122 if (service->IsLoaded()) { |
| 120 RestoreTabUsingProfile(profile); | 123 RestoreTabUsingProfile(profile); |
| 121 } else { | 124 } else { |
| 122 tab_restore_helper_.reset(new TabRestoreHelper(this, profile, service)); | 125 tab_restore_helper_.reset(new TabRestoreHelper(this, profile, service)); |
| 123 service->LoadTabsFromLastSession(); | 126 service->LoadTabsFromLastSession(); |
| 124 } | 127 } |
| 125 } | 128 } |
| 126 | 129 |
| 127 void ChromeNewWindowDelegate::ShowTaskManager() { | 130 void ChromeNewWindowDelegate::ShowTaskManager() { |
| 128 chrome::OpenTaskManager(NULL); | 131 chrome::OpenTaskManager(NULL); |
| 129 } | 132 } |
| 130 | 133 |
| 131 void ChromeNewWindowDelegate::OpenFeedbackPage() { | 134 void ChromeNewWindowDelegate::OpenFeedbackPage() { |
| 132 chrome::OpenFeedbackDialog(GetBrowserForActiveWindow()); | 135 chrome::OpenFeedbackDialog(GetBrowserForActiveWindow()); |
| 133 } | 136 } |
| OLD | NEW |