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

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

Issue 18500005: Fix SessionStorage confusion between RenderViewHostImpl and NavigationController. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: code review Created 7 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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_service.h" 5 #include "chrome/browser/sessions/session_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 1316 matching lines...) Expand 10 before | Expand all | Expand 10 after
1327 commands->push_back( 1327 commands->push_back(
1328 CreateSetSelectedNavigationIndexCommand(session_id, current_index)); 1328 CreateSetSelectedNavigationIndexCommand(session_id, current_index));
1329 1329
1330 if (index_in_window != -1) { 1330 if (index_in_window != -1) {
1331 commands->push_back( 1331 commands->push_back(
1332 CreateSetTabIndexInWindowCommand(session_id, index_in_window)); 1332 CreateSetTabIndexInWindowCommand(session_id, index_in_window));
1333 } 1333 }
1334 1334
1335 // Record the association between the sessionStorage namespace and the tab. 1335 // Record the association between the sessionStorage namespace and the tab.
1336 content::SessionStorageNamespace* session_storage_namespace = 1336 content::SessionStorageNamespace* session_storage_namespace =
1337 tab->GetController().GetDefaultSessionStorageNamespace(); 1337 tab->GetController().GetSessionStorageNamespace();
1338 ScheduleCommand(CreateSessionStorageAssociatedCommand( 1338 ScheduleCommand(CreateSessionStorageAssociatedCommand(
1339 session_tab_helper->session_id(), 1339 session_tab_helper->session_id(),
1340 session_storage_namespace->persistent_id())); 1340 session_storage_namespace->persistent_id()));
1341 } 1341 }
1342 1342
1343 void SessionService::BuildCommandsForBrowser( 1343 void SessionService::BuildCommandsForBrowser(
1344 Browser* browser, 1344 Browser* browser,
1345 std::vector<SessionCommand*>* commands, 1345 std::vector<SessionCommand*>* commands,
1346 IdToRange* tab_to_available_range, 1346 IdToRange* tab_to_available_range,
1347 std::set<SessionID::id_type>* windows_to_track) { 1347 std::set<SessionID::id_type>* windows_to_track) {
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
1729 if (extensions_tab_helper && 1729 if (extensions_tab_helper &&
1730 extensions_tab_helper->extension_app()) { 1730 extensions_tab_helper->extension_app()) {
1731 SetTabExtensionAppID( 1731 SetTabExtensionAppID(
1732 session_tab_helper->window_id(), 1732 session_tab_helper->window_id(),
1733 session_tab_helper->session_id(), 1733 session_tab_helper->session_id(),
1734 extensions_tab_helper->extension_app()->id()); 1734 extensions_tab_helper->extension_app()->id());
1735 } 1735 }
1736 1736
1737 // Record the association between the SessionStorageNamespace and the 1737 // Record the association between the SessionStorageNamespace and the
1738 // tab. 1738 // tab.
1739 //
1740 // TODO(ajwong): This should be processing the whole map rather than
1741 // just the default. This in particular will not work for tabs with only
1742 // isolated apps which won't have a default partition.
1743 content::SessionStorageNamespace* session_storage_namespace = 1739 content::SessionStorageNamespace* session_storage_namespace =
1744 contents->GetController().GetDefaultSessionStorageNamespace(); 1740 contents->GetController().GetSessionStorageNamespace();
1745 ScheduleCommand(CreateSessionStorageAssociatedCommand( 1741 ScheduleCommand(CreateSessionStorageAssociatedCommand(
1746 session_tab_helper->session_id(), 1742 session_tab_helper->session_id(),
1747 session_storage_namespace->persistent_id())); 1743 session_storage_namespace->persistent_id()));
1748 session_storage_namespace->SetShouldPersist(true); 1744 session_storage_namespace->SetShouldPersist(true);
1749 } 1745 }
1750 1746
1751 void SessionService::TabClosing(WebContents* contents) { 1747 void SessionService::TabClosing(WebContents* contents) {
1752 // Allow the associated sessionStorage to get deleted; it won't be needed 1748 // Allow the associated sessionStorage to get deleted; it won't be needed
1753 // in the session restore. 1749 // in the session restore.
1754 content::SessionStorageNamespace* session_storage_namespace = 1750 content::SessionStorageNamespace* session_storage_namespace =
1755 contents->GetController().GetDefaultSessionStorageNamespace(); 1751 contents->GetController().GetSessionStorageNamespace();
1756 session_storage_namespace->SetShouldPersist(false); 1752 session_storage_namespace->SetShouldPersist(false);
1757 SessionTabHelper* session_tab_helper = 1753 SessionTabHelper* session_tab_helper =
1758 SessionTabHelper::FromWebContents(contents); 1754 SessionTabHelper::FromWebContents(contents);
1759 TabClosed(session_tab_helper->window_id(), 1755 TabClosed(session_tab_helper->window_id(),
1760 session_tab_helper->session_id(), 1756 session_tab_helper->session_id(),
1761 contents->GetClosedByUserGesture()); 1757 contents->GetClosedByUserGesture());
1762 RecordSessionUpdateHistogramData(content::NOTIFICATION_WEB_CONTENTS_DESTROYED, 1758 RecordSessionUpdateHistogramData(content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
1763 &last_updated_tab_closed_time_); 1759 &last_updated_tab_closed_time_);
1764 } 1760 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698