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

Side by Side Diff: chrome/browser/ui/webui/ntp/recently_closed_tabs_handler.cc

Issue 8662051: retry r112077 - recently closed menu: respect middle click (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/ui/webui/ntp/recently_closed_tabs_handler.h" 5 #include "chrome/browser/ui/webui/ntp/recently_closed_tabs_handler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "chrome/browser/profiles/profile.h" 10 #include "chrome/browser/profiles/profile.h"
11 #include "chrome/browser/sessions/tab_restore_service_delegate.h" 11 #include "chrome/browser/sessions/tab_restore_service_delegate.h"
12 #include "chrome/browser/sessions/tab_restore_service_factory.h" 12 #include "chrome/browser/sessions/tab_restore_service_factory.h"
13 #include "chrome/browser/ui/webui/ntp/new_tab_ui.h" 13 #include "chrome/browser/ui/webui/ntp/new_tab_ui.h"
14 #include "chrome/browser/ui/webui/web_ui_util.h"
14 #include "chrome/common/url_constants.h" 15 #include "chrome/common/url_constants.h"
15 #include "content/browser/tab_contents/tab_contents.h" 16 #include "content/browser/tab_contents/tab_contents.h"
16 17
17 namespace { 18 namespace {
18 19
19 void TabToValue(const TabRestoreService::Tab& tab, 20 void TabToValue(const TabRestoreService::Tab& tab,
20 DictionaryValue* dictionary) { 21 DictionaryValue* dictionary) {
21 const TabNavigation& current_navigation = 22 const TabNavigation& current_navigation =
22 tab.navigations.at(tab.current_navigation_index); 23 tab.navigations.at(tab.current_navigation_index);
23 NewTabUI::SetURLTitleAndDirection(dictionary, current_navigation.title(), 24 NewTabUI::SetURLTitleAndDirection(dictionary, current_navigation.title(),
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 tab_restore_service_->RemoveObserver(this); 59 tab_restore_service_->RemoveObserver(this);
59 } 60 }
60 61
61 void RecentlyClosedTabsHandler::HandleReopenTab(const ListValue* args) { 62 void RecentlyClosedTabsHandler::HandleReopenTab(const ListValue* args) {
62 TabRestoreServiceDelegate* delegate = 63 TabRestoreServiceDelegate* delegate =
63 TabRestoreServiceDelegate::FindDelegateForController( 64 TabRestoreServiceDelegate::FindDelegateForController(
64 &web_ui_->tab_contents()->controller(), NULL); 65 &web_ui_->tab_contents()->controller(), NULL);
65 if (!delegate || !tab_restore_service_) 66 if (!delegate || !tab_restore_service_)
66 return; 67 return;
67 68
68 int session_to_restore; 69 double index = -1.0;
69 if (!ExtractIntegerValue(args, &session_to_restore)) 70 CHECK(args->GetDouble(1, &index));
70 return;
71 71
72 const TabRestoreService::Entries& entries = tab_restore_service_->entries();
73 int index = 0;
74 for (TabRestoreService::Entries::const_iterator iter = entries.begin();
75 iter != entries.end(); ++iter, ++index) {
76 if (session_to_restore == (*iter)->id)
77 break;
78 }
79 // There are actually less than 20 restore tab items displayed in the UI. 72 // There are actually less than 20 restore tab items displayed in the UI.
80 UMA_HISTOGRAM_ENUMERATION("NewTabPage.SessionRestore", index, 20); 73 UMA_HISTOGRAM_ENUMERATION("NewTabPage.SessionRestore",
74 static_cast<int>(index), 20);
81 75
82 tab_restore_service_->RestoreEntryById(delegate, session_to_restore, true); 76 double session_to_restore = 0.0;
77 CHECK(args->GetDouble(0, &session_to_restore));
78
79 WindowOpenDisposition disposition =
80 web_ui_util::GetDispositionFromClick(args, 2);
81 tab_restore_service_->RestoreEntryById(delegate,
82 static_cast<int>(session_to_restore),
83 disposition);
83 // The current tab has been nuked at this point; don't touch any member 84 // The current tab has been nuked at this point; don't touch any member
84 // variables. 85 // variables.
85 } 86 }
86 87
87 void RecentlyClosedTabsHandler::HandleGetRecentlyClosedTabs( 88 void RecentlyClosedTabsHandler::HandleGetRecentlyClosedTabs(
88 const ListValue* args) { 89 const ListValue* args) {
89 if (!tab_restore_service_) { 90 if (!tab_restore_service_) {
90 tab_restore_service_ = 91 tab_restore_service_ =
91 TabRestoreServiceFactory::GetForProfile(Profile::FromWebUI(web_ui_)); 92 TabRestoreServiceFactory::GetForProfile(Profile::FromWebUI(web_ui_));
92 93
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 DCHECK_EQ(entry->type, TabRestoreService::WINDOW); 139 DCHECK_EQ(entry->type, TabRestoreService::WINDOW);
139 WindowToValue(*static_cast<TabRestoreService::Window*>(entry), 140 WindowToValue(*static_cast<TabRestoreService::Window*>(entry),
140 entry_dict.get()); 141 entry_dict.get());
141 } 142 }
142 143
143 entry_dict->SetInteger("sessionId", entry->id); 144 entry_dict->SetInteger("sessionId", entry->id);
144 entry_list_value->Append(entry_dict.release()); 145 entry_list_value->Append(entry_dict.release());
145 added_count++; 146 added_count++;
146 } 147 }
147 } 148 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/ntp/app_launcher_handler.cc ('k') | chrome/browser/ui/webui/web_ui_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698