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

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

Issue 3325012: Fix SessionStorage (Closed)
Patch Set: kill the last (new) dcheck Created 10 years, 3 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 (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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/tab_restore_service.h" 5 #include "chrome/browser/sessions/tab_restore_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <iterator> 8 #include <iterator>
9 #include <map> 9 #include <map>
10 10
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 if (!restoring_tab_in_window) { 331 if (!restoring_tab_in_window) {
332 browser = Browser::Create(profile()); 332 browser = Browser::Create(profile());
333 for (size_t tab_i = 0; tab_i < window->tabs.size(); ++tab_i) { 333 for (size_t tab_i = 0; tab_i < window->tabs.size(); ++tab_i) {
334 const Tab& tab = window->tabs[tab_i]; 334 const Tab& tab = window->tabs[tab_i];
335 TabContents* restored_tab = 335 TabContents* restored_tab =
336 browser->AddRestoredTab(tab.navigations, browser->tab_count(), 336 browser->AddRestoredTab(tab.navigations, browser->tab_count(),
337 tab.current_navigation_index, 337 tab.current_navigation_index,
338 tab.extension_app_id, 338 tab.extension_app_id,
339 (static_cast<int>(tab_i) == 339 (static_cast<int>(tab_i) ==
340 window->selected_tab_index), 340 window->selected_tab_index),
341 tab.pinned, tab.from_last_session); 341 tab.pinned, tab.from_last_session,
342 tab.session_storage_namespace);
342 if (restored_tab) 343 if (restored_tab)
343 restored_tab->controller().LoadIfNecessary(); 344 restored_tab->controller().LoadIfNecessary();
344 } 345 }
345 // All the window's tabs had the same former browser_id. 346 // All the window's tabs had the same former browser_id.
346 if (window->tabs[0].has_browser()) { 347 if (window->tabs[0].has_browser()) {
347 UpdateTabBrowserIDs(window->tabs[0].browser_id, 348 UpdateTabBrowserIDs(window->tabs[0].browser_id,
348 browser->session_id().id()); 349 browser->session_id().id());
349 } 350 }
350 } else { 351 } else {
351 // Restore a single tab from the window. Find the tab that matches the ID 352 // Restore a single tab from the window. Find the tab that matches the ID
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 } 470 }
470 tab->timestamp = TimeNow(); 471 tab->timestamp = TimeNow();
471 tab->current_navigation_index = controller->GetCurrentEntryIndex(); 472 tab->current_navigation_index = controller->GetCurrentEntryIndex();
472 if (tab->current_navigation_index == -1 && entry_count > 0) 473 if (tab->current_navigation_index == -1 && entry_count > 0)
473 tab->current_navigation_index = 0; 474 tab->current_navigation_index = 0;
474 475
475 Extension* extension = controller->tab_contents()->extension_app(); 476 Extension* extension = controller->tab_contents()->extension_app();
476 if (extension) 477 if (extension)
477 tab->extension_app_id = extension->id(); 478 tab->extension_app_id = extension->id();
478 479
480 tab->session_storage_namespace = controller->session_storage_namespace();
481
479 // Browser may be NULL during unit tests. 482 // Browser may be NULL during unit tests.
480 if (browser) { 483 if (browser) {
481 tab->browser_id = browser->session_id().id(); 484 tab->browser_id = browser->session_id().id();
482 tab->tabstrip_index = 485 tab->tabstrip_index =
483 browser->tabstrip_model()->GetIndexOfController(controller); 486 browser->tabstrip_model()->GetIndexOfController(controller);
484 tab->pinned = browser->tabstrip_model()->IsTabPinned(tab->tabstrip_index); 487 tab->pinned = browser->tabstrip_model()->IsTabPinned(tab->tabstrip_index);
485 } 488 }
486 } 489 }
487 490
488 void TabRestoreService::NotifyTabsChanged() { 491 void TabRestoreService::NotifyTabsChanged() {
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
859 Browser* TabRestoreService::RestoreTab(const Tab& tab, 862 Browser* TabRestoreService::RestoreTab(const Tab& tab,
860 Browser* browser, 863 Browser* browser,
861 bool replace_existing_tab) { 864 bool replace_existing_tab) {
862 // |browser| will be NULL in cases where one isn't already available (eg, 865 // |browser| will be NULL in cases where one isn't already available (eg,
863 // when invoked on Mac OS X with no windows open). In this case, create a 866 // when invoked on Mac OS X with no windows open). In this case, create a
864 // new browser into which we restore the tabs. 867 // new browser into which we restore the tabs.
865 if (replace_existing_tab && browser) { 868 if (replace_existing_tab && browser) {
866 browser->ReplaceRestoredTab(tab.navigations, 869 browser->ReplaceRestoredTab(tab.navigations,
867 tab.current_navigation_index, 870 tab.current_navigation_index,
868 tab.from_last_session, 871 tab.from_last_session,
869 tab.extension_app_id); 872 tab.extension_app_id,
873 tab.session_storage_namespace);
870 } else { 874 } else {
871 if (tab.has_browser()) 875 if (tab.has_browser())
872 browser = BrowserList::FindBrowserWithID(tab.browser_id); 876 browser = BrowserList::FindBrowserWithID(tab.browser_id);
873 877
874 int tab_index = -1; 878 int tab_index = -1;
875 if (browser) { 879 if (browser) {
876 tab_index = tab.tabstrip_index; 880 tab_index = tab.tabstrip_index;
877 } else { 881 } else {
878 browser = Browser::Create(profile()); 882 browser = Browser::Create(profile());
879 if (tab.has_browser()) { 883 if (tab.has_browser()) {
880 UpdateTabBrowserIDs(tab.browser_id, browser->session_id().id()); 884 UpdateTabBrowserIDs(tab.browser_id, browser->session_id().id());
881 } 885 }
882 } 886 }
883 887
884 if (tab_index < 0 || tab_index > browser->tab_count()) { 888 if (tab_index < 0 || tab_index > browser->tab_count()) {
885 tab_index = browser->tab_count(); 889 tab_index = browser->tab_count();
886 } 890 }
887 891
888 browser->AddRestoredTab(tab.navigations, 892 browser->AddRestoredTab(tab.navigations,
889 tab_index, 893 tab_index,
890 tab.current_navigation_index, 894 tab.current_navigation_index,
891 tab.extension_app_id, 895 tab.extension_app_id,
892 true, tab.pinned, tab.from_last_session); 896 true, tab.pinned, tab.from_last_session,
897 tab.session_storage_namespace);
893 } 898 }
894 return browser; 899 return browser;
895 } 900 }
896 901
897 902
898 bool TabRestoreService::ValidateTab(Tab* tab) { 903 bool TabRestoreService::ValidateTab(Tab* tab) {
899 if (tab->navigations.empty()) 904 if (tab->navigations.empty())
900 return false; 905 return false;
901 906
902 tab->current_navigation_index = 907 tab->current_navigation_index =
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
1050 // correctly write out the entries when Save is invoked (Save starts from 1055 // correctly write out the entries when Save is invoked (Save starts from
1051 // the front, not the end and we just added the entries to the end). 1056 // the front, not the end and we just added the entries to the end).
1052 entries_to_write_ = staging_entries_.size(); 1057 entries_to_write_ = staging_entries_.size();
1053 1058
1054 PruneAndNotify(); 1059 PruneAndNotify();
1055 } 1060 }
1056 1061
1057 Time TabRestoreService::TimeNow() const { 1062 Time TabRestoreService::TimeNow() const {
1058 return time_factory_ ? time_factory_->TimeNow() : Time::Now(); 1063 return time_factory_ ? time_factory_->TimeNow() : Time::Now();
1059 } 1064 }
OLDNEW
« no previous file with comments | « chrome/browser/sessions/tab_restore_service.h ('k') | chrome/browser/sidebar/sidebar_container.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698