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

Side by Side Diff: chrome/browser/sessions/session_restore.cc

Issue 2927853002: Force guest profiles to return default startup prefs. (Closed)
Patch Set: Created 3 years, 6 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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/sessions/session_restore.h" 5 #include "chrome/browser/sessions/session_restore.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <list> 10 #include <list>
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 79
80 bool HasSingleNewTabPage(Browser* browser) { 80 bool HasSingleNewTabPage(Browser* browser) {
81 if (browser->tab_strip_model()->count() != 1) 81 if (browser->tab_strip_model()->count() != 1)
82 return false; 82 return false;
83 const content::WebContents* active_tab = 83 const content::WebContents* active_tab =
84 browser->tab_strip_model()->GetWebContentsAt(0); 84 browser->tab_strip_model()->GetWebContentsAt(0);
85 return active_tab->GetURL() == chrome::kChromeUINewTabURL || 85 return active_tab->GetURL() == chrome::kChromeUINewTabURL ||
86 search::IsInstantNTP(active_tab); 86 search::IsInstantNTP(active_tab);
87 } 87 }
88 88
89 Profile* SafeProfileForNewWindows(Profile* profile) {
90 // Guest sessions must always be OffTheRecord when opening windows.
91 return profile->IsGuestSession() ? profile->GetOffTheRecordProfile()
sky 2017/06/07 19:21:40 I'm a little confused by this, and forgive me beca
shrike 2017/06/07 20:19:05 Gosh, I wish could even start to comment. I know n
92 : profile;
93 }
94
89 class SessionRestoreImpl; 95 class SessionRestoreImpl;
90 96
91 // Pointers to SessionRestoreImpls which are currently restoring the session. 97 // Pointers to SessionRestoreImpls which are currently restoring the session.
92 std::set<SessionRestoreImpl*>* active_session_restorers = nullptr; 98 std::set<SessionRestoreImpl*>* active_session_restorers = nullptr;
93 99
94 // SessionRestoreImpl --------------------------------------------------------- 100 // SessionRestoreImpl ---------------------------------------------------------
95 101
96 // SessionRestoreImpl is responsible for fetching the set of tabs to create 102 // SessionRestoreImpl is responsible for fetching the set of tabs to create
97 // from SessionService. SessionRestoreImpl deletes itself when done. 103 // from SessionService. SessionRestoreImpl deletes itself when done.
98 104
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 WindowOpenDisposition disposition) { 213 WindowOpenDisposition disposition) {
208 DCHECK(!tab.navigations.empty()); 214 DCHECK(!tab.navigations.empty());
209 int selected_index = tab.current_navigation_index; 215 int selected_index = tab.current_navigation_index;
210 selected_index = std::max( 216 selected_index = std::max(
211 0, 217 0,
212 std::min(selected_index, static_cast<int>(tab.navigations.size() - 1))); 218 std::min(selected_index, static_cast<int>(tab.navigations.size() - 1)));
213 219
214 bool use_new_window = disposition == WindowOpenDisposition::NEW_WINDOW; 220 bool use_new_window = disposition == WindowOpenDisposition::NEW_WINDOW;
215 221
216 Browser* browser = use_new_window 222 Browser* browser = use_new_window
217 ? new Browser(Browser::CreateParams(profile_, true)) 223 ? new Browser(Browser::CreateParams(
224 SafeProfileForNewWindows(profile_), true))
218 : browser_; 225 : browser_;
219 226
220 RecordAppLaunchForTab(browser, tab, selected_index); 227 RecordAppLaunchForTab(browser, tab, selected_index);
221 228
222 WebContents* web_contents; 229 WebContents* web_contents;
223 if (disposition == WindowOpenDisposition::CURRENT_TAB) { 230 if (disposition == WindowOpenDisposition::CURRENT_TAB) {
224 DCHECK(!use_new_window); 231 DCHECK(!use_new_window);
225 web_contents = chrome::ReplaceRestoredTab( 232 web_contents = chrome::ReplaceRestoredTab(
226 browser, tab.navigations, selected_index, true, tab.extension_app_id, 233 browser, tab.navigations, selected_index, true, tab.extension_app_id,
227 nullptr, tab.user_agent_override); 234 nullptr, tab.user_agent_override);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 // 292 //
286 // If successful, this begins loading tabs and deletes itself when all tabs 293 // If successful, this begins loading tabs and deletes itself when all tabs
287 // have been loaded. 294 // have been loaded.
288 // 295 //
289 // Returns the Browser that was created, if any. 296 // Returns the Browser that was created, if any.
290 Browser* FinishedTabCreation(bool succeeded, 297 Browser* FinishedTabCreation(bool succeeded,
291 bool created_tabbed_browser, 298 bool created_tabbed_browser,
292 std::vector<RestoredTab>* contents_created) { 299 std::vector<RestoredTab>* contents_created) {
293 Browser* browser = nullptr; 300 Browser* browser = nullptr;
294 if (!created_tabbed_browser && always_create_tabbed_browser_) { 301 if (!created_tabbed_browser && always_create_tabbed_browser_) {
295 browser = new Browser(Browser::CreateParams(profile_, false)); 302 browser = new Browser(
303 Browser::CreateParams(SafeProfileForNewWindows(profile_), false));
296 if (urls_to_open_.empty()) { 304 if (urls_to_open_.empty()) {
297 // No tab browsers were created and no URLs were supplied on the command 305 // No tab browsers were created and no URLs were supplied on the command
298 // line. Open the new tab page. 306 // line. Open the new tab page.
299 urls_to_open_.push_back(GURL(chrome::kChromeUINewTabURL)); 307 urls_to_open_.push_back(GURL(chrome::kChromeUINewTabURL));
300 } 308 }
301 AppendURLsToBrowser(browser, urls_to_open_); 309 AppendURLsToBrowser(browser, urls_to_open_);
302 browser->window()->Show(); 310 browser->window()->Show();
303 } 311 }
304 312
305 if (succeeded) { 313 if (succeeded) {
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 DCHECK(web_contents->GetController().NeedsReload()); 630 DCHECK(web_contents->GetController().NeedsReload());
623 631
624 return web_contents; 632 return web_contents;
625 } 633 }
626 634
627 Browser* CreateRestoredBrowser(Browser::Type type, 635 Browser* CreateRestoredBrowser(Browser::Type type,
628 gfx::Rect bounds, 636 gfx::Rect bounds,
629 const std::string& workspace, 637 const std::string& workspace,
630 ui::WindowShowState show_state, 638 ui::WindowShowState show_state,
631 const std::string& app_name) { 639 const std::string& app_name) {
632 Browser::CreateParams params(type, profile_, false); 640 Profile* profile = SafeProfileForNewWindows(profile_);
641 Browser::CreateParams params(type, profile, false);
633 if (!app_name.empty()) { 642 if (!app_name.empty()) {
634 const bool trusted_source = true; // We only store trusted app windows. 643 const bool trusted_source = true; // We only store trusted app windows.
635 params = Browser::CreateParams::CreateForApp(app_name, trusted_source, 644 params = Browser::CreateParams::CreateForApp(app_name, trusted_source,
636 bounds, profile_, false); 645 bounds, profile, false);
637 } else { 646 } else {
638 params.initial_bounds = bounds; 647 params.initial_bounds = bounds;
639 } 648 }
640 params.initial_show_state = show_state; 649 params.initial_show_state = show_state;
641 params.initial_workspace = workspace; 650 params.initial_workspace = workspace;
642 params.is_session_restore = true; 651 params.is_session_restore = true;
643 return new Browser(params); 652 return new Browser(params);
644 } 653 }
645 654
646 void ShowBrowser(Browser* browser, int selected_tab_index) { 655 void ShowBrowser(Browser* browser, int selected_tab_index) {
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
844 // static 853 // static
845 SessionRestore::CallbackSubscription 854 SessionRestore::CallbackSubscription
846 SessionRestore::RegisterOnSessionRestoredCallback( 855 SessionRestore::RegisterOnSessionRestoredCallback(
847 const base::Callback<void(int)>& callback) { 856 const base::Callback<void(int)>& callback) {
848 return on_session_restored_callbacks()->Add(callback); 857 return on_session_restored_callbacks()->Add(callback);
849 } 858 }
850 859
851 // static 860 // static
852 base::CallbackList<void(int)>* 861 base::CallbackList<void(int)>*
853 SessionRestore::on_session_restored_callbacks_ = nullptr; 862 SessionRestore::on_session_restored_callbacks_ = nullptr;
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698