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 #ifndef COMPONENTS_RENDERER_CONTEXT_MENU_CONTEXT_MENU_DELEGATE_H_ 6 #define COMPONENTS_RENDERER_CONTEXT_MENU_CONTEXT_MENU_DELEGATE_H_ 7 8 #include "base/memory/scoped_ptr.h" 9 10 class RenderViewContextMenu; 11 12 namespace content { 13 class WebContents; 14 struct ContextMenuParams; 15 } 16 17 // A ContextMenuDelegate can build and show renderer context menu. 18 class ContextMenuDelegate { 19 public: 20 explicit ContextMenuDelegate(content::WebContents* web_contents); 21 virtual ~ContextMenuDelegate(); 22 23 static ContextMenuDelegate* FromWebContents( 24 content::WebContents* web_contents); 25 26 // Builds and returns a context menu for a context specified by |params|. 27 // The returned value can be used to display the context menu. 28 virtual scoped_ptr<RenderViewContextMenu> BuildMenu( 29 content::WebContents* web_contents, 30 const content::ContextMenuParams& params) = 0; 31 32 // Displays the context menu. 33 virtual void ShowMenu(scoped_ptr<RenderViewContextMenu> menu) = 0; 34 35 private: 36 DISALLOW_COPY_AND_ASSIGN(ContextMenuDelegate); 37 }; 38 39 #endif // COMPONENTS_RENDERER_CONTEXT_MENU_CONTEXT_MENU_DELEGATE_H_ 40