bookmark_context_menu_controller.cc revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/bookmarks/bookmark_context_menu_controller.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/command_line.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_service.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/app/chrome_command_ids.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/bookmarks/bookmark_model.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/bookmarks/bookmark_model_factory.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/bookmarks/bookmark_utils.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/prefs/incognito_mode_prefs.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/ui/bookmarks/bookmark_editor.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/bookmarks/bookmark_utils.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/chrome_pages.h" 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h" 21a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/browser/undo/bookmark_undo_service.h" 22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/browser/undo/bookmark_undo_service_factory.h" 23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/common/chrome_switches.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/page_navigator.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/user_metrics.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/generated_resources.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::PageNavigator; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::UserMetricsAction; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BookmarkContextMenuController::BookmarkContextMenuController( 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::NativeWindow parent_window, 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkContextMenuControllerDelegate* delegate, 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser* browser, 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile, 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PageNavigator* navigator, 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* parent, 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::vector<const BookmarkNode*>& selection) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : parent_window_(parent_window), 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delegate_(delegate), 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser_(browser), 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_(profile), 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) navigator_(navigator), 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) parent_(parent), 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selection_(selection), 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) model_(BookmarkModelFactory::GetForProfile(profile)) { 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(profile_); 50b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) DCHECK(model_->loaded()); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) menu_model_.reset(new ui::SimpleMenuModel(this)); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) model_->AddObserver(this); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BuildMenu(); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BookmarkContextMenuController::~BookmarkContextMenuController() { 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (model_) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) model_->RemoveObserver(this); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BookmarkContextMenuController::BuildMenu() { 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (selection_.size() == 1 && selection_[0]->is_url()) { 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddItem(IDC_BOOKMARK_BAR_OPEN_ALL, 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_BOOKMARK_BAR_OPEN_IN_NEW_TAB); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddItem(IDC_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW, 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_BOOKMARK_BAR_OPEN_IN_NEW_WINDOW); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddItem(IDC_BOOKMARK_BAR_OPEN_ALL_INCOGNITO, 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_BOOKMARK_BAR_OPEN_INCOGNITO); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddItem(IDC_BOOKMARK_BAR_OPEN_ALL, IDS_BOOKMARK_BAR_OPEN_ALL); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddItem(IDC_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW, 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddItem(IDC_BOOKMARK_BAR_OPEN_ALL_INCOGNITO, 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_BOOKMARK_BAR_OPEN_ALL_INCOGNITO); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddSeparator(); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (selection_.size() == 1 && selection_[0]->is_folder()) { 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddItem(IDC_BOOKMARK_BAR_RENAME_FOLDER, IDS_BOOKMARK_BAR_RENAME_FOLDER); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddItem(IDC_BOOKMARK_BAR_EDIT, IDS_BOOKMARK_BAR_EDIT); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddSeparator(); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddItem(IDC_CUT, IDS_CUT); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddItem(IDC_COPY, IDS_COPY); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddItem(IDC_PASTE, IDS_PASTE); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddSeparator(); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddItem(IDC_BOOKMARK_BAR_REMOVE, IDS_BOOKMARK_BAR_REMOVE); 92a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) if (CommandLine::ForCurrentProcess()->HasSwitch( 93a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) switches::kEnableBookmarkUndo)) { 94a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) AddItem(IDC_BOOKMARK_BAR_UNDO, IDS_BOOKMARK_BAR_UNDO); 95a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) AddItem(IDC_BOOKMARK_BAR_REDO, IDS_BOOKMARK_BAR_REDO); 96a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddSeparator(); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddItem(IDC_BOOKMARK_BAR_ADD_NEW_BOOKMARK, IDS_BOOKMARK_BAR_ADD_NEW_BOOKMARK); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddItem(IDC_BOOKMARK_BAR_NEW_FOLDER, IDS_BOOKMARK_BAR_NEW_FOLDER); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddSeparator(); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddItem(IDC_BOOKMARK_MANAGER, IDS_BOOKMARK_MANAGER); 104f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Use the native host desktop type in tests. 105f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (chrome::IsAppsShortcutEnabled( 106f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) profile_, 107f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) browser_ ? browser_->host_desktop_type() 108f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) : chrome::HOST_DESKTOP_TYPE_NATIVE)) { 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AddCheckboxItem(IDC_BOOKMARK_BAR_SHOW_APPS_SHORTCUT, 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_BOOKMARK_BAR_SHOW_APPS_SHORTCUT); 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddCheckboxItem(IDC_BOOKMARK_BAR_ALWAYS_SHOW, IDS_SHOW_BOOKMARK_BAR); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BookmarkContextMenuController::AddItem(int id, int localization_id) { 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) menu_model_->AddItemWithStringId(id, localization_id); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BookmarkContextMenuController::AddSeparator() { 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BookmarkContextMenuController::AddCheckboxItem(int id, 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int localization_id) { 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) menu_model_->AddCheckItemWithStringId(id, localization_id); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void BookmarkContextMenuController::ExecuteCommand(int id, int event_flags) { 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (delegate_) 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) delegate_->WillExecuteCommand(id, selection_); 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (ExecutePlatformCommand(id, event_flags)) { 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (delegate_) 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) delegate_->DidExecuteCommand(id); 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (id) { 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_OPEN_ALL: 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_OPEN_ALL_INCOGNITO: 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW: { 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WindowOpenDisposition initial_disposition; 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (id == IDC_BOOKMARK_BAR_OPEN_ALL) { 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) initial_disposition = NEW_BACKGROUND_TAB; 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction( 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UserMetricsAction("BookmarkBar_ContextMenu_OpenAll")); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (id == IDC_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW) { 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) initial_disposition = NEW_WINDOW; 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction( 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UserMetricsAction("BookmarkBar_ContextMenu_OpenAllInNewWindow")); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) initial_disposition = OFF_THE_RECORD; 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction( 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UserMetricsAction("BookmarkBar_ContextMenu_OpenAllIncognito")); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::OpenAll(parent_window_, navigator_, selection_, 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) initial_disposition, profile_); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_RENAME_FOLDER: 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_EDIT: 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction( 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UserMetricsAction("BookmarkBar_ContextMenu_Edit")); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (selection_.size() != 1) { 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkEditor::Show( 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) parent_window_, 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_, 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkEditor::EditDetails::EditNode(selection_[0]), 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selection_[0]->is_url() ? BookmarkEditor::SHOW_TREE : 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkEditor::NO_TREE); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 179a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) case IDC_BOOKMARK_BAR_UNDO: { 180a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) content::RecordAction( 181a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) UserMetricsAction("BookmarkBar_ContextMenu_Undo")); 182a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) BookmarkUndoServiceFactory::GetForProfile(profile_)->undo_manager()-> 183a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) Undo(); 184a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) break; 185a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 186a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 187a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) case IDC_BOOKMARK_BAR_REDO: { 188a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) content::RecordAction( 189a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) UserMetricsAction("BookmarkBar_ContextMenu_Redo")); 190a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) BookmarkUndoServiceFactory::GetForProfile(profile_)->undo_manager()-> 191a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) Redo(); 192a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) break; 193a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 194a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_REMOVE: { 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction( 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UserMetricsAction("BookmarkBar_ContextMenu_Remove")); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < selection_.size(); ++i) { 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int index = selection_[i]->parent()->GetIndexOf(selection_[i]); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (index > -1) 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) model_->Remove(selection_[i]->parent(), index); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selection_.clear(); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_ADD_NEW_BOOKMARK: { 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction( 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UserMetricsAction("BookmarkBar_ContextMenu_Add")); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int index; 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* parent = 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bookmark_utils::GetParentForNewNodes(parent_, selection_, &index); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url; 216a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 title; 2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::GetURLAndTitleToBookmark( 2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser_->tab_strip_model()->GetActiveWebContents(), 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &url, &title); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkEditor::Show(parent_window_, 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_, 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkEditor::EditDetails::AddNodeInFolder( 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) parent, index, url, title), 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkEditor::SHOW_TREE); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_NEW_FOLDER: { 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction( 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UserMetricsAction("BookmarkBar_ContextMenu_NewFolder")); 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int index; 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* parent = 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bookmark_utils::GetParentForNewNodes(parent_, selection_, &index); 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkEditor::Show( 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) parent_window_, 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_, 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkEditor::EditDetails::AddFolder(parent, index), 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkEditor::SHOW_TREE); 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_ALWAYS_SHOW: 2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::ToggleBookmarkBarWhenVisible(profile_); 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case IDC_BOOKMARK_BAR_SHOW_APPS_SHORTCUT: { 2482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefService* prefs = profile_->GetPrefs(); 2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs->SetBoolean( 2502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kShowAppsShortcutInBookmarkBar, 2512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) !prefs->GetBoolean(prefs::kShowAppsShortcutInBookmarkBar)); 2522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 2532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_MANAGER: { 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction(UserMetricsAction("ShowBookmarkManager")); 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (selection_.size() != 1) 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::ShowBookmarkManager(browser_); 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (selection_[0]->is_folder()) 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::ShowBookmarkManagerForNode(browser_, selection_[0]->id()); 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (parent_) 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::ShowBookmarkManagerForNode(browser_, parent_->id()); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::ShowBookmarkManager(browser_); 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_CUT: 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bookmark_utils::CopyToClipboard(model_, selection_, true); 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_COPY: 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bookmark_utils::CopyToClipboard(model_, selection_, false); 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_PASTE: { 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int index; 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BookmarkNode* paste_target = 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bookmark_utils::GetParentForNewNodes(parent_, selection_, &index); 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!paste_target) 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bookmark_utils::PasteFromClipboard(model_, paste_target, index); 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (delegate_) 2922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) delegate_->DidExecuteCommand(id); 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool BookmarkContextMenuController::IsCommandIdChecked(int command_id) const { 296eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PrefService* prefs = profile_->GetPrefs(); 2972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (command_id == IDC_BOOKMARK_BAR_ALWAYS_SHOW) 2982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return prefs->GetBoolean(prefs::kShowBookmarkBar); 2992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK_EQ(IDC_BOOKMARK_BAR_SHOW_APPS_SHORTCUT, command_id); 3012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return prefs->GetBoolean(prefs::kShowAppsShortcutInBookmarkBar); 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool BookmarkContextMenuController::IsCommandIdEnabled(int command_id) const { 305eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool enabled = false; 3062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (IsPlatformCommandIdEnabled(command_id, &enabled)) 3072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return enabled; 3082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 309eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PrefService* prefs = profile_->GetPrefs(); 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_root_node = selection_.size() == 1 && 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selection_[0]->parent() == model_->root_node(); 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool can_edit = prefs->GetBoolean(prefs::kEditBookmarksEnabled); 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IncognitoModePrefs::Availability incognito_avail = 315eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IncognitoModePrefs::GetAvailability(prefs); 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (command_id) { 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_OPEN_INCOGNITO: 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return !profile_->IsOffTheRecord() && 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) incognito_avail != IncognitoModePrefs::DISABLED; 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_OPEN_ALL_INCOGNITO: 3222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return chrome::HasBookmarkURLsAllowedInIncognitoMode(selection_, profile_) 3232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) && 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) !profile_->IsOffTheRecord() && 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) incognito_avail != IncognitoModePrefs::DISABLED; 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_OPEN_ALL: 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return chrome::HasBookmarkURLs(selection_); 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW: 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return chrome::HasBookmarkURLs(selection_) && 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) incognito_avail != IncognitoModePrefs::FORCED; 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_RENAME_FOLDER: 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_EDIT: 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return selection_.size() == 1 && !is_root_node && can_edit; 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 337a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) case IDC_BOOKMARK_BAR_UNDO: 338a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return can_edit && 339a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) BookmarkUndoServiceFactory::GetForProfile(profile_)-> 340a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) undo_manager()->undo_count() > 0; 341a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 342a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) case IDC_BOOKMARK_BAR_REDO: 343a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return can_edit && 344a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) BookmarkUndoServiceFactory::GetForProfile(profile_)-> 345a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) undo_manager()->redo_count() > 0; 346a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_REMOVE: 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return !selection_.empty() && !is_root_node && can_edit; 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_NEW_FOLDER: 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_ADD_NEW_BOOKMARK: 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return can_edit && bookmark_utils::GetParentForNewNodes( 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) parent_, selection_, NULL) != NULL; 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_BOOKMARK_BAR_ALWAYS_SHOW: 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return !prefs->IsManagedPreference(prefs::kShowBookmarkBar); 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case IDC_BOOKMARK_BAR_SHOW_APPS_SHORTCUT: 3592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return !prefs->IsManagedPreference(prefs::kShowAppsShortcutInBookmarkBar); 3602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_COPY: 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_CUT: 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return !selection_.empty() && !is_root_node && 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (command_id == IDC_COPY || can_edit); 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case IDC_PASTE: 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Paste to selection from the Bookmark Bar, to parent_ everywhere else 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return can_edit && 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ((!selection_.empty() && 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bookmark_utils::CanPasteFromClipboard(selection_[0])) || 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bookmark_utils::CanPasteFromClipboard(parent_)); 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool BookmarkContextMenuController::GetAcceleratorForCommandId( 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int command_id, 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::Accelerator* accelerator) { 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if !defined(OS_WIN) 3832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool BookmarkContextMenuController::IsPlatformCommandIdEnabled( 3842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int command_id, 3852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool* enabled) const { 3862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // By default, there are no platform-specific enabled or disabled commands. 3872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return false; 3882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 3892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool BookmarkContextMenuController::ExecutePlatformCommand(int id, 3912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int event_flags) { 3922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // By default, there are no platform-specific commands. 3932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return false; 3942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 3952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // OS_WIN 3962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BookmarkContextMenuController::BookmarkModelChanged() { 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (delegate_) 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delegate_->CloseMenu(); 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 401