Home | History | Annotate | Download | only in tab_contents
      1 // Copyright (c) 2012 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_COCOA_TAB_CONTENTS_CHROME_WEB_CONTENTS_VIEW_DELEGATE_MAC_H_
      6 #define CHROME_BROWSER_UI_COCOA_TAB_CONTENTS_CHROME_WEB_CONTENTS_VIEW_DELEGATE_MAC_H_
      7 
      8 #if defined(__OBJC__)
      9 
     10 #include "base/basictypes.h"
     11 #include "base/memory/scoped_ptr.h"
     12 #include "chrome/browser/renderer_context_menu/context_menu_delegate.h"
     13 #include "content/public/browser/web_contents_view_delegate.h"
     14 
     15 class RenderViewContextMenu;
     16 class RenderViewContextMenuMac;
     17 class WebDragBookmarkHandlerMac;
     18 
     19 namespace content {
     20 class RenderWidgetHostView;
     21 class WebContents;
     22 }
     23 
     24 // A chrome/ specific class that extends WebContentsViewMac with features that
     25 // live in chrome/.
     26 class ChromeWebContentsViewDelegateMac
     27     : public content::WebContentsViewDelegate,
     28       public ContextMenuDelegate {
     29  public:
     30   explicit ChromeWebContentsViewDelegateMac(content::WebContents* web_contents);
     31   virtual ~ChromeWebContentsViewDelegateMac();
     32 
     33   // Overridden from WebContentsViewDelegate:
     34   virtual NSObject<RenderWidgetHostViewMacDelegate>*
     35       CreateRenderWidgetHostViewDelegate(
     36           content::RenderWidgetHost* render_widget_host) OVERRIDE;
     37   virtual content::WebDragDestDelegate* GetDragDestDelegate() OVERRIDE;
     38   virtual void ShowContextMenu(
     39       content::RenderFrameHost* render_frame_host,
     40       const content::ContextMenuParams& params) OVERRIDE;
     41 
     42   // Overridden from ContextMenuDelegate.
     43   virtual scoped_ptr<RenderViewContextMenu> BuildMenu(
     44       content::WebContents* web_contents,
     45       const content::ContextMenuParams& params) OVERRIDE;
     46   virtual void ShowMenu(scoped_ptr<RenderViewContextMenu> menu) OVERRIDE;
     47 
     48  private:
     49   content::RenderWidgetHostView* GetActiveRenderWidgetHostView();
     50 
     51   // The context menu. Callbacks are asynchronous so we need to keep it around.
     52   scoped_ptr<RenderViewContextMenuMac> context_menu_;
     53 
     54   // The chrome specific delegate that receives events from WebDragDestMac.
     55   scoped_ptr<WebDragBookmarkHandlerMac> bookmark_handler_;
     56 
     57   // The WebContents that owns the view.
     58   content::WebContents* web_contents_;
     59 
     60   DISALLOW_COPY_AND_ASSIGN(ChromeWebContentsViewDelegateMac);
     61 };
     62 
     63 #endif  // __OBJC__
     64 
     65 #endif  // CHROME_BROWSER_UI_COCOA_TAB_CONTENTS_CHROME_WEB_CONTENTS_VIEW_DELEGATE_MAC_H_
     66