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 |