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

Unified Diff: chrome/browser/sessions/tab_restore_service.cc

Issue 9359022: Aura: Support hovering restore & close buttons for full screen apps (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix browser_test Created 8 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sessions/tab_restore_service.cc
diff --git a/chrome/browser/sessions/tab_restore_service.cc b/chrome/browser/sessions/tab_restore_service.cc
index fa19cf5ebd2d91abc5a5d7f06e9396a5e3c1b58b..380f917e0e6c6c553d4f802c5b7f265d9fc957a9 100644
--- a/chrome/browser/sessions/tab_restore_service.cc
+++ b/chrome/browser/sessions/tab_restore_service.cc
@@ -81,6 +81,7 @@ static const SessionCommand::id_type kCommandWindow = 3;
static const SessionCommand::id_type kCommandSelectedNavigationInTab = 4;
static const SessionCommand::id_type kCommandPinnedState = 5;
static const SessionCommand::id_type kCommandSetExtensionAppID = 6;
+static const SessionCommand::id_type kCommandSetWindowAppName = 7;
// Number of entries (not commands) before we clobber the file and write
// everything.
@@ -240,6 +241,8 @@ void TabRestoreService::BrowserClosing(TabRestoreServiceDelegate* delegate) {
scoped_ptr<Window> window(new Window());
window->selected_tab_index = delegate->GetSelectedIndex();
window->timestamp = TimeNow();
+ window->app_name = delegate->GetAppName();
+
// Don't use std::vector::resize() because it will push copies of an empty tab
// into the vector, which will give all tabs in a window the same ID.
for (int i = 0; i < delegate->GetTabCount(); ++i) {
@@ -258,7 +261,7 @@ void TabRestoreService::BrowserClosing(TabRestoreServiceDelegate* delegate) {
entry_index++;
}
}
- if (window->tabs.size() == 1) {
+ if (window->tabs.size() == 1 && window->app_name.empty()) {
// Short-circuit creating a Window if only 1 tab was present. This fixes
// http://crbug.com/56744. Copy the Tab because it's owned by an object on
// the stack.
@@ -349,7 +352,7 @@ void TabRestoreService::RestoreEntryById(TabRestoreServiceDelegate* delegate,
// single tab within it. If the entry's ID matches the one to restore, then
// the entire window will be restored.
if (!restoring_tab_in_window) {
- delegate = TabRestoreServiceDelegate::Create(profile());
+ delegate = TabRestoreServiceDelegate::Create(profile(), window->app_name);
for (size_t tab_i = 0; tab_i < window->tabs.size(); ++tab_i) {
const Tab& tab = window->tabs[tab_i];
WebContents* restored_tab =
@@ -612,6 +615,13 @@ void TabRestoreService::ScheduleCommandsForWindow(const Window& window) {
valid_tab_count,
window.timestamp));
+ if (!window.app_name.empty()) {
+ ScheduleCommand(
+ CreateSetWindowAppNameCommand(kCommandSetWindowAppName,
+ window.id,
+ window.app_name));
+ }
+
for (size_t i = 0; i < window.tabs.size(); ++i) {
int selected_index = GetSelectedNavigationIndexToPersist(window.tabs[i]);
if (selected_index != -1)
@@ -886,6 +896,22 @@ void TabRestoreService::CreateEntriesFromCommands(
break;
}
+ case kCommandSetWindowAppName: {
+ if (!current_window) {
+ // We should have created a window already.
+ NOTREACHED();
+ return;
+ }
+
+ SessionID::id_type window_id;
+ std::string app_name;
+ if (!RestoreSetWindowAppNameCommand(command, &window_id, &app_name))
+ return;
+
+ current_window->app_name.swap(app_name);
+ break;
+ }
+
case kCommandSetExtensionAppID: {
if (!current_tab) {
// Should be in a tab when we get this.
@@ -936,7 +962,7 @@ TabRestoreServiceDelegate* TabRestoreService::RestoreTab(
if (delegate && disposition != NEW_WINDOW) {
tab_index = tab.tabstrip_index;
} else {
- delegate = TabRestoreServiceDelegate::Create(profile());
+ delegate = TabRestoreServiceDelegate::Create(profile(), std::string());
if (tab.has_browser())
UpdateTabBrowserIDs(tab.browser_id, delegate->GetSessionID().id());
}
« no previous file with comments | « chrome/browser/sessions/tab_restore_service.h ('k') | chrome/browser/sessions/tab_restore_service_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698