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 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_UI_VIEWS_TAB_CONTENTS_RENDER_VIEW_CONTEXT_MENU_VIEWS_H_ 6 #define CHROME_BROWSER_UI_VIEWS_TAB_CONTENTS_RENDER_VIEW_CONTEXT_MENU_VIEWS_H_ 7 #pragma once 8 9 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_vector.h" 11 #include "chrome/browser/tab_contents/render_view_context_menu.h" 12 #include "views/controls/menu/menu_2.h" 13 14 class RenderViewContextMenuViews : public RenderViewContextMenu { 15 public: 16 RenderViewContextMenuViews(TabContents* tab_contents, 17 const ContextMenuParams& params); 18 19 virtual ~RenderViewContextMenuViews(); 20 21 void RunMenuAt(int x, int y); 22 GetMenuHandle()23 gfx::NativeMenu GetMenuHandle() const { 24 return (menu_.get() ? menu_->GetNativeMenu() : NULL); 25 } 26 27 #if defined(OS_WIN) 28 // Set this menu to show for an external tab contents. This 29 // only has an effect before Init() is called. 30 void SetExternal(); 31 #endif 32 33 void UpdateMenuItemStates(); 34 35 protected: 36 // RenderViewContextMenu implementation -------------------------------------- 37 virtual void PlatformInit(); 38 virtual bool GetAcceleratorForCommandId(int command_id, 39 ui::Accelerator* accelerator); 40 private: 41 // The context menu itself and its contents. 42 scoped_ptr<views::Menu2> menu_; 43 44 DISALLOW_COPY_AND_ASSIGN(RenderViewContextMenuViews); 45 }; 46 47 #endif // CHROME_BROWSER_UI_VIEWS_TAB_CONTENTS_RENDER_VIEW_CONTEXT_MENU_VIEWS_H_ 48