Home | History | Annotate | Download | only in renderer_context_menu
      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