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

Side by Side Diff: chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.cc

Issue 11316127: Alternate NTP: Limit width of tab titles in recent tabs menu (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address review comments Created 8 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 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/ui/toolbar/recent_tabs_sub_menu_model.h" 5 #include "chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/string_number_conversions.h" 8 #include "base/string_number_conversions.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "chrome/app/chrome_command_ids.h" 10 #include "chrome/app/chrome_command_ids.h"
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 RecentTabsSubMenuModel::~RecentTabsSubMenuModel() { 140 RecentTabsSubMenuModel::~RecentTabsSubMenuModel() {
141 } 141 }
142 142
143 bool RecentTabsSubMenuModel::IsCommandIdChecked(int command_id) const { 143 bool RecentTabsSubMenuModel::IsCommandIdChecked(int command_id) const {
144 return false; 144 return false;
145 } 145 }
146 146
147 bool RecentTabsSubMenuModel::IsCommandIdEnabled(int command_id) const { 147 bool RecentTabsSubMenuModel::IsCommandIdEnabled(int command_id) const {
148 if (command_id == IDC_RESTORE_TAB) 148 if (command_id == IDC_RESTORE_TAB)
149 return chrome::IsCommandEnabled(browser_, command_id); 149 return chrome::IsCommandEnabled(browser_, command_id);
150 if (command_id == kDisabledCommandId) 150 if (command_id == kDisabledCommandId ||
151 command_id == IDC_RECENT_TABS_NO_DEVICE_TABS) {
151 return false; 152 return false;
153 }
152 int model_index = CommandIdToModelIndex(command_id); 154 int model_index = CommandIdToModelIndex(command_id);
153 return model_index >= 0 && model_index < static_cast<int>(model_.size()); 155 return model_index >= 0 && model_index < static_cast<int>(model_.size());
154 } 156 }
155 157
156 bool RecentTabsSubMenuModel::GetAcceleratorForCommandId( 158 bool RecentTabsSubMenuModel::GetAcceleratorForCommandId(
157 int command_id, ui::Accelerator* accelerator) { 159 int command_id, ui::Accelerator* accelerator) {
158 if (command_id == IDC_RESTORE_TAB && 160 if (command_id == IDC_RESTORE_TAB &&
159 reopen_closed_tab_accelerator_.key_code() != ui::VKEY_UNKNOWN) { 161 reopen_closed_tab_accelerator_.key_code() != ui::VKEY_UNKNOWN) {
160 *accelerator = reopen_closed_tab_accelerator_; 162 *accelerator = reopen_closed_tab_accelerator_;
161 return true; 163 return true;
(...skipping 24 matching lines...) Expand all
186 ExecuteCommand(command_id, 0); 188 ExecuteCommand(command_id, 0);
187 } 189 }
188 190
189 void RecentTabsSubMenuModel::ExecuteCommand(int command_id, int event_flags) { 191 void RecentTabsSubMenuModel::ExecuteCommand(int command_id, int event_flags) {
190 if (command_id == IDC_RESTORE_TAB) { 192 if (command_id == IDC_RESTORE_TAB) {
191 chrome::ExecuteCommandWithDisposition(browser_, command_id, 193 chrome::ExecuteCommandWithDisposition(browser_, command_id,
192 chrome::DispositionFromEventFlags(event_flags)); 194 chrome::DispositionFromEventFlags(event_flags));
193 return; 195 return;
194 } 196 }
195 197
196 DCHECK(command_id != kDisabledCommandId); 198 DCHECK_NE(kDisabledCommandId, command_id);
199 DCHECK_NE(IDC_RECENT_TABS_NO_DEVICE_TABS, command_id);
200
197 int model_idx = CommandIdToModelIndex(command_id); 201 int model_idx = CommandIdToModelIndex(command_id);
198 DCHECK(model_idx >= 0 && model_idx < static_cast<int>(model_.size())); 202 DCHECK(model_idx >= 0 && model_idx < static_cast<int>(model_.size()));
199 const NavigationItem& item = model_[model_idx]; 203 const NavigationItem& item = model_[model_idx];
200 DCHECK(item.tab_id > -1 && item.url.is_valid()); 204 DCHECK(item.tab_id > -1 && item.url.is_valid());
201 205
202 WindowOpenDisposition disposition = 206 WindowOpenDisposition disposition =
203 chrome::DispositionFromEventFlags(event_flags); 207 chrome::DispositionFromEventFlags(event_flags);
204 if (disposition == CURRENT_TAB) // Force to open a new foreground tab. 208 if (disposition == CURRENT_TAB) // Force to open a new foreground tab.
205 disposition = NEW_FOREGROUND_TAB; 209 disposition = NEW_FOREGROUND_TAB;
206 210
(...skipping 19 matching lines...) Expand all
226 return; 230 return;
227 int prev_num_tabs = browser_->tab_strip_model()->count(); 231 int prev_num_tabs = browser_->tab_strip_model()->count();
228 SessionRestore::RestoreForeignSessionTab( 232 SessionRestore::RestoreForeignSessionTab(
229 chrome::GetActiveWebContents(browser_), *tab, disposition); 233 chrome::GetActiveWebContents(browser_), *tab, disposition);
230 // If tab is successfully added (i.e. there's 1 more tab), select it. 234 // If tab is successfully added (i.e. there's 1 more tab), select it.
231 if (browser_->tab_strip_model()->count() == prev_num_tabs + 1) 235 if (browser_->tab_strip_model()->count() == prev_num_tabs + 1)
232 chrome::SelectNextTab(browser_); 236 chrome::SelectNextTab(browser_);
233 } 237 }
234 } 238 }
235 239
240 int RecentTabsSubMenuModel::GetMaxWidthForItemAtIndex(int item_index) const {
sky 2012/11/28 15:41:28 Is there a reason for the method instead of a cons
sail 2012/11/30 23:24:53 Some of the items in this menu should be elided bu
kuan 2012/11/30 23:40:59 is it possible to make this a static method that t
241 int command_id = GetCommandIdAt(item_index);
242 if (command_id == IDC_RECENT_TABS_NO_DEVICE_TABS ||
243 command_id == IDC_RESTORE_TAB) {
244 return -1;
245 }
246 return 320;
247 }
248
236 void RecentTabsSubMenuModel::Build() { 249 void RecentTabsSubMenuModel::Build() {
237 // The menu contains: 250 // The menu contains:
238 // - Reopen closed tab, then separator 251 // - Reopen closed tab, then separator
239 // - device 1 section header, then list of tabs from device, then separator 252 // - device 1 section header, then list of tabs from device, then separator
240 // - device 2 section header, then list of tabs from device, then separator 253 // - device 2 section header, then list of tabs from device, then separator
241 // ... 254 // ...
242 // |model_| only contains navigatable (and hence executable) tab items for 255 // |model_| only contains navigatable (and hence executable) tab items for
243 // other devices. 256 // other devices.
244 BuildLastClosed(); 257 BuildLastClosed();
245 BuildDevices(); 258 BuildDevices();
246 if (model_.empty()) 259 if (model_.empty()) {
247 AddItemWithStringId(kDisabledCommandId, IDS_RECENT_TABS_NO_DEVICE_TABS); 260 AddItemWithStringId(IDC_RECENT_TABS_NO_DEVICE_TABS,
261 IDS_RECENT_TABS_NO_DEVICE_TABS);
262 }
248 } 263 }
249 264
250 void RecentTabsSubMenuModel::BuildLastClosed() { 265 void RecentTabsSubMenuModel::BuildLastClosed() {
251 AddItem(IDC_RESTORE_TAB, GetLabelForCommandId(IDC_RESTORE_TAB)); 266 AddItem(IDC_RESTORE_TAB, GetLabelForCommandId(IDC_RESTORE_TAB));
252 AddSeparator(ui::NORMAL_SEPARATOR); 267 AddSeparator(ui::NORMAL_SEPARATOR);
253 } 268 }
254 269
255 void RecentTabsSubMenuModel::BuildDevices() { 270 void RecentTabsSubMenuModel::BuildDevices() {
256 browser_sync::SessionModelAssociator* associator = GetModelAssociator(); 271 browser_sync::SessionModelAssociator* associator = GetModelAssociator();
257 if (!associator) 272 if (!associator)
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 RecentTabsSubMenuModel::GetModelAssociator() { 442 RecentTabsSubMenuModel::GetModelAssociator() {
428 if (!associator_) { 443 if (!associator_) {
429 ProfileSyncService* service = ProfileSyncServiceFactory::GetInstance()-> 444 ProfileSyncService* service = ProfileSyncServiceFactory::GetInstance()->
430 GetForProfile(browser_->profile()); 445 GetForProfile(browser_->profile());
431 // Only return the associator if it exists and it is done syncing sessions. 446 // Only return the associator if it exists and it is done syncing sessions.
432 if (service && service->ShouldPushChanges()) 447 if (service && service->ShouldPushChanges())
433 associator_ = service->GetSessionModelAssociator(); 448 associator_ = service->GetSessionModelAssociator();
434 } 449 }
435 return associator_; 450 return associator_;
436 } 451 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698