Home | History | Annotate | Download | only in shell
      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 CONTENT_SHELL_SHELL_WEB_CONTENTS_VIEW_DELEGATE_H_
      6 #define CONTENT_SHELL_SHELL_WEB_CONTENTS_VIEW_DELEGATE_H_
      7 
      8 #include "content/public/browser/web_contents.h"
      9 #include "content/public/browser/web_contents_view_delegate.h"
     10 #include "content/public/common/context_menu_params.h"
     11 
     12 #if defined(TOOLKIT_GTK)
     13 #include "ui/base/gtk/gtk_signal.h"
     14 #include "ui/base/gtk/owned_widget_gtk.h"
     15 #endif
     16 
     17 namespace content {
     18 
     19 class ShellWebContentsViewDelegate : public WebContentsViewDelegate {
     20  public:
     21   explicit ShellWebContentsViewDelegate(WebContents* web_contents);
     22   virtual ~ShellWebContentsViewDelegate();
     23 
     24   // Overridden from WebContentsViewDelegate:
     25   virtual void ShowContextMenu(const ContextMenuParams& params) OVERRIDE;
     26   virtual WebDragDestDelegate* GetDragDestDelegate() OVERRIDE;
     27 
     28 #if defined(TOOLKIT_GTK)
     29   virtual void Initialize(GtkWidget* expanded_container,
     30                           ui::FocusStoreGtk* focus_store) OVERRIDE;
     31   virtual gfx::NativeView GetNativeView() const OVERRIDE;
     32   virtual void Focus() OVERRIDE;
     33   virtual gboolean OnNativeViewFocusEvent(GtkWidget* widget,
     34                                           GtkDirectionType type,
     35                                           gboolean* return_value) OVERRIDE;
     36 #elif defined(OS_MACOSX)
     37   virtual NSObject<RenderWidgetHostViewMacDelegate>*
     38       CreateRenderWidgetHostViewDelegate(
     39           RenderWidgetHost* render_widget_host) OVERRIDE;
     40   void ActionPerformed(int id);
     41 #elif defined(OS_WIN)
     42   virtual void StoreFocus() OVERRIDE;
     43   virtual void RestoreFocus() OVERRIDE;
     44   virtual bool Focus() OVERRIDE;
     45   virtual void TakeFocus(bool reverse) OVERRIDE;
     46   virtual void SizeChanged(const gfx::Size& size) OVERRIDE;
     47   void MenuItemSelected(int selection);
     48 #endif
     49 
     50  private:
     51   WebContents* web_contents_;
     52   ContextMenuParams params_;
     53 
     54 #if defined(TOOLKIT_GTK)
     55   ui::OwnedWidgetGtk floating_;
     56   GtkWidget* expanded_container_;
     57 
     58   CHROMEGTK_CALLBACK_0(ShellWebContentsViewDelegate, void,
     59                        OnBackMenuActivated);
     60   CHROMEGTK_CALLBACK_0(ShellWebContentsViewDelegate, void,
     61                        OnForwardMenuActivated);
     62   CHROMEGTK_CALLBACK_0(ShellWebContentsViewDelegate, void,
     63                        OnReloadMenuActivated);
     64   CHROMEGTK_CALLBACK_0(ShellWebContentsViewDelegate, void,
     65                        OnOpenURLMenuActivated);
     66   CHROMEGTK_CALLBACK_0(ShellWebContentsViewDelegate, void,
     67                        OnCutMenuActivated);
     68   CHROMEGTK_CALLBACK_0(ShellWebContentsViewDelegate, void,
     69                        OnCopyMenuActivated);
     70   CHROMEGTK_CALLBACK_0(ShellWebContentsViewDelegate, void,
     71                        OnPasteMenuActivated);
     72   CHROMEGTK_CALLBACK_0(ShellWebContentsViewDelegate, void,
     73                        OnDeleteMenuActivated);
     74   CHROMEGTK_CALLBACK_0(ShellWebContentsViewDelegate, void,
     75                        OnInspectMenuActivated);
     76 #endif
     77 
     78   DISALLOW_COPY_AND_ASSIGN(ShellWebContentsViewDelegate);
     79 };
     80 
     81 }  // namespace content
     82 
     83 #endif // CONTENT_SHELL_SHELL_WEB_CONTENTS_VIEW_DELEGATE_H_
     84