Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(268)

Side by Side Diff: ios/chrome/browser/sessions/ios_chrome_tab_restore_service_client.mm

Issue 2628273004: Revert of Use ChromeBrowserStateManager instead of BrowserListIOS. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "ios/chrome/browser/sessions/ios_chrome_tab_restore_service_client.h" 5 #include "ios/chrome/browser/sessions/ios_chrome_tab_restore_service_client.h"
6 6
7 #include "base/bind.h"
8 #include "base/callback.h"
9 #include "components/sessions/ios/ios_live_tab.h" 7 #include "components/sessions/ios/ios_live_tab.h"
10 #include "ios/chrome/browser/application_context.h"
11 #include "ios/chrome/browser/browser_state/chrome_browser_state.h" 8 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
12 #include "ios/chrome/browser/browser_state/chrome_browser_state_manager.h"
13 #include "ios/chrome/browser/chrome_url_constants.h" 9 #include "ios/chrome/browser/chrome_url_constants.h"
14 #include "ios/chrome/browser/sessions/tab_restore_service_delegate_impl_ios.h" 10 #include "ios/chrome/browser/sessions/tab_restore_service_delegate_impl_ios.h"
15 #include "ios/chrome/browser/sessions/tab_restore_service_delegate_impl_ios_fact ory.h" 11 #include "ios/chrome/browser/sessions/tab_restore_service_delegate_impl_ios_fact ory.h"
16 #import "ios/chrome/browser/tabs/tab.h" 12 #include "ios/chrome/browser/tabs/tab.h"
17 #import "ios/chrome/browser/tabs/tab_model.h" 13 #include "ios/chrome/browser/tabs/tab_model.h"
18 #import "ios/chrome/browser/tabs/tab_model_list.h" 14 #include "ios/chrome/browser/ui/browser_ios.h"
15 #include "ios/chrome/browser/ui/browser_list_ios.h"
19 #include "ios/public/provider/chrome/browser/chrome_browser_provider.h" 16 #include "ios/public/provider/chrome/browser/chrome_browser_provider.h"
20 #include "ios/web/public/web_thread.h" 17 #include "ios/web/public/web_thread.h"
21 #include "url/gurl.h" 18 #include "url/gurl.h"
22 19
23 #if !defined(__has_feature) || !__has_feature(objc_arc) 20 #if !defined(__has_feature) || !__has_feature(objc_arc)
24 #error "This file requires ARC support." 21 #error "This file requires ARC support."
25 #endif 22 #endif
26 23
27 namespace {
28 sessions::LiveTabContext* FindLiveTabContextWithCondition(
29 const base::Callback<bool(TabModel*)>& condition) {
30 std::vector<ios::ChromeBrowserState*> browser_states =
31 GetApplicationContext()
32 ->GetChromeBrowserStateManager()
33 ->GetLoadedBrowserStates();
34
35 for (ios::ChromeBrowserState* browser_state : browser_states) {
36 DCHECK(!browser_state->IsOffTheRecord());
37 NSArray<TabModel*>* tab_models;
38
39 tab_models = GetTabModelsForChromeBrowserState(browser_state);
40 for (TabModel* tab_model : tab_models) {
41 if (condition.Run(tab_model)) {
42 return TabRestoreServiceDelegateImplIOSFactory::GetForBrowserState(
43 browser_state);
44 }
45 }
46
47 if (!browser_state->HasOffTheRecordChromeBrowserState())
48 continue;
49
50 ios::ChromeBrowserState* otr_browser_state =
51 browser_state->GetOffTheRecordChromeBrowserState();
52
53 tab_models = GetTabModelsForChromeBrowserState(otr_browser_state);
54 for (TabModel* tab_model : tab_models) {
55 if (condition.Run(tab_model)) {
56 return TabRestoreServiceDelegateImplIOSFactory::GetForBrowserState(
57 browser_state);
58 }
59 }
60 }
61
62 return nullptr;
63 }
64 } // namespace
65
66 IOSChromeTabRestoreServiceClient::IOSChromeTabRestoreServiceClient( 24 IOSChromeTabRestoreServiceClient::IOSChromeTabRestoreServiceClient(
67 ios::ChromeBrowserState* browser_state) 25 ios::ChromeBrowserState* browser_state)
68 : browser_state_(browser_state) {} 26 : browser_state_(browser_state) {}
69 27
70 IOSChromeTabRestoreServiceClient::~IOSChromeTabRestoreServiceClient() {} 28 IOSChromeTabRestoreServiceClient::~IOSChromeTabRestoreServiceClient() {}
71 29
72 sessions::LiveTabContext* 30 sessions::LiveTabContext*
73 IOSChromeTabRestoreServiceClient::CreateLiveTabContext( 31 IOSChromeTabRestoreServiceClient::CreateLiveTabContext(
74 const std::string& app_name) { 32 const std::string& app_name) {
75 return TabRestoreServiceDelegateImplIOSFactory::GetForBrowserState( 33 return TabRestoreServiceDelegateImplIOSFactory::GetForBrowserState(
76 browser_state_); 34 browser_state_);
77 } 35 }
78 36
79 sessions::LiveTabContext* 37 sessions::LiveTabContext*
80 IOSChromeTabRestoreServiceClient::FindLiveTabContextForTab( 38 IOSChromeTabRestoreServiceClient::FindLiveTabContextForTab(
81 const sessions::LiveTab* tab) { 39 const sessions::LiveTab* tab) {
82 const sessions::IOSLiveTab* requested_tab = 40 const sessions::IOSLiveTab* requested_tab =
83 static_cast<const sessions::IOSLiveTab*>(tab); 41 static_cast<const sessions::IOSLiveTab*>(tab);
84 42 for (BrowserListIOS::const_iterator iter = BrowserListIOS::begin();
85 return FindLiveTabContextWithCondition(base::Bind( 43 iter != BrowserListIOS::end(); ++iter) {
86 [](const web::WebState* web_state, TabModel* tab_model) { 44 id<BrowserIOS> browser = *iter;
87 for (Tab* current_tab in tab_model) { 45 for (Tab* current_tab in [browser tabModel]) {
88 if (current_tab.webState && current_tab.webState == web_state) { 46 if (current_tab.webState &&
89 return true; 47 current_tab.webState == requested_tab->web_state()) {
90 } 48 return TabRestoreServiceDelegateImplIOSFactory::GetForBrowserState(
91 } 49 [browser browserState]);
92 return false; 50 }
93 }, 51 }
94 requested_tab->web_state())); 52 }
53 return nullptr;
95 } 54 }
96 55
97 sessions::LiveTabContext* 56 sessions::LiveTabContext*
98 IOSChromeTabRestoreServiceClient::FindLiveTabContextWithID( 57 IOSChromeTabRestoreServiceClient::FindLiveTabContextWithID(
99 SessionID::id_type desired_id) { 58 SessionID::id_type desired_id) {
100 return FindLiveTabContextWithCondition(base::Bind( 59 for (BrowserListIOS::const_iterator iter = BrowserListIOS::begin();
101 [](SessionID::id_type desired_id, TabModel* tab_model) { 60 iter != BrowserListIOS::end(); ++iter) {
102 return tab_model.sessionID.id() == desired_id; 61 id<BrowserIOS> browser = *iter;
103 }, 62 if ([browser tabModel].sessionID.id() == desired_id) {
104 desired_id)); 63 return TabRestoreServiceDelegateImplIOSFactory::GetForBrowserState(
64 [browser browserState]);
65 }
66 }
67 return nullptr;
105 } 68 }
106 69
107 bool IOSChromeTabRestoreServiceClient::ShouldTrackURLForRestore( 70 bool IOSChromeTabRestoreServiceClient::ShouldTrackURLForRestore(
108 const GURL& url) { 71 const GURL& url) {
109 // NOTE: In the //chrome client, chrome://quit and chrome://restart are 72 // NOTE: In the //chrome client, chrome://quit and chrome://restart are
110 // blacklisted from being tracked to avoid entering infinite loops. However, 73 // blacklisted from being tracked to avoid entering infinite loops. However,
111 // iOS intentionally does not support those URLs, so there is no need to 74 // iOS intentionally does not support those URLs, so there is no need to
112 // blacklist them here. 75 // blacklist them here.
113 return url.is_valid(); 76 return url.is_valid();
114 } 77 }
(...skipping 21 matching lines...) Expand all
136 99
137 bool IOSChromeTabRestoreServiceClient::HasLastSession() { 100 bool IOSChromeTabRestoreServiceClient::HasLastSession() {
138 return false; 101 return false;
139 } 102 }
140 103
141 void IOSChromeTabRestoreServiceClient::GetLastSession( 104 void IOSChromeTabRestoreServiceClient::GetLastSession(
142 const sessions::GetLastSessionCallback& callback, 105 const sessions::GetLastSessionCallback& callback,
143 base::CancelableTaskTracker* tracker) { 106 base::CancelableTaskTracker* tracker) {
144 NOTREACHED(); 107 NOTREACHED();
145 } 108 }
OLDNEW
« no previous file with comments | « ios/chrome/browser/sessions/BUILD.gn ('k') | ios/chrome/browser/sessions/tab_restore_service_delegate_impl_ios.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698