1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/renderer_context_menu/render_view_context_menu_test_util.h" 6#include "content/public/browser/web_contents.h" 7#include "ui/base/models/menu_model.h" 8 9using ui::MenuModel; 10 11TestRenderViewContextMenu::TestRenderViewContextMenu( 12 content::RenderFrameHost* render_frame_host, 13 content::ContextMenuParams params) 14 : RenderViewContextMenu(render_frame_host, params) {} 15 16TestRenderViewContextMenu::~TestRenderViewContextMenu() {} 17 18// static 19TestRenderViewContextMenu* TestRenderViewContextMenu::Create( 20 content::WebContents* web_contents, 21 const GURL& page_url, 22 const GURL& link_url, 23 const GURL& frame_url) { 24 content::ContextMenuParams params; 25 params.page_url = page_url; 26 params.link_url = link_url; 27 params.frame_url = frame_url; 28 TestRenderViewContextMenu* menu = 29 new TestRenderViewContextMenu(web_contents->GetMainFrame(), params); 30 menu->Init(); 31 return menu; 32} 33 34bool TestRenderViewContextMenu::GetAcceleratorForCommandId( 35 int command_id, 36 ui::Accelerator* accelerator) { 37 // None of our commands have accelerators, so always return false. 38 return false; 39} 40 41bool TestRenderViewContextMenu::IsItemPresent(int command_id) { 42 return menu_model_.GetIndexOfCommandId(command_id) != -1; 43} 44 45bool TestRenderViewContextMenu::GetMenuModelAndItemIndex( 46 int command_id, 47 MenuModel** found_model, 48 int* found_index) { 49 std::vector<MenuModel*> models_to_search; 50 models_to_search.push_back(&menu_model_); 51 52 while (!models_to_search.empty()) { 53 MenuModel* model = models_to_search.back(); 54 models_to_search.pop_back(); 55 for (int i = 0; i < model->GetItemCount(); i++) { 56 if (model->GetCommandIdAt(i) == command_id) { 57 *found_model = model; 58 *found_index = i; 59 return true; 60 } else if (model->GetTypeAt(i) == MenuModel::TYPE_SUBMENU) { 61 models_to_search.push_back(model->GetSubmenuModelAt(i)); 62 } 63 } 64 } 65 66 return false; 67} 68