#include "third_party/skia/include/core/SkColor.h"
#include "ui/base/window_open_disposition.h"
#include "ui/gfx/native_widget_types.h"
-#include "ui/gfx/size.h"
+#include "ui/gfx/rect.h"
#if defined(OS_ANDROID)
#include "base/android/scoped_java_ref.h"
struct WebFindOptions;
}
-namespace gfx {
-class Rect;
-class Size;
-}
-
namespace net {
struct LoadStateWithParam;
}
class RenderWidgetHostView;
class SiteInstance;
class WebContentsDelegate;
-class WebContentsView;
+struct CustomContextMenuContext;
+struct DropData;
struct RendererPreferences;
// WebContents is the core class in content/. A WebContents renders web content
// scoped_ptr<content::WebContents> web_contents(
// content::WebContents::Create(
// content::WebContents::CreateParams(browser_context)));
-// gfx::NativeView view = web_contents->GetView()->GetNativeView();
+// gfx::NativeView view = web_contents->GetNativeView();
// // |view| is an HWND, NSView*, GtkWidget*, etc.; insert it into the view
// // hierarchy wherever it needs to go.
//
// NULL.
virtual RenderWidgetHostView* GetFullscreenRenderWidgetHostView() const = 0;
- // The WebContentsView will never change and is guaranteed non-NULL.
- virtual WebContentsView* GetView() const = 0;
-
// Create a WebUI page for the given url. In most cases, this doesn't need to
// be called by embedders since content will create its own WebUI objects as
// necessary. However if the embedder wants to create its own WebUI object and
// returns false.
virtual bool NeedToFireBeforeUnload() = 0;
+ // Runs the beforeunload handler for the main frame. See also ClosePage and
+ // SwapOut in RenderViewHost, which run the unload handler.
+ //
+ // |for_cross_site_transition| indicates whether this call is for the current
+ // frame during a cross-process navigation. False means we're closing the
+ // entire tab.
+ //
+ // TODO(creis): We should run the beforeunload handler for every frame that
+ // has one.
+ virtual void DispatchBeforeUnload(bool for_cross_site_transition) = 0;
+
// Commands ------------------------------------------------------------------
// Stop any pending navigation.
// heap-allocated pointer is owned by the caller.
virtual WebContents* Clone() = 0;
+ // Reloads the focused frame.
+ virtual void ReloadFocusedFrame(bool ignore_cache) = 0;
+
+ // Editing commands ----------------------------------------------------------
+
+ virtual void Undo() = 0;
+ virtual void Redo() = 0;
+ virtual void Cut() = 0;
+ virtual void Copy() = 0;
+ virtual void CopyToFindPboard() = 0;
+ virtual void Paste() = 0;
+ virtual void PasteAndMatchStyle() = 0;
+ virtual void Delete() = 0;
+ virtual void SelectAll() = 0;
+ virtual void Unselect() = 0;
+
+ // Replaces the currently selected word or a word around the cursor.
+ virtual void Replace(const base::string16& word) = 0;
+
+ // Replaces the misspelling in the current selection.
+ virtual void ReplaceMisspelling(const base::string16& word) = 0;
+
+ // Let the renderer know that the menu has been closed.
+ virtual void NotifyContextMenuClosed(
+ const CustomContextMenuContext& context) = 0;
+
+ // Executes custom context menu action that was provided from Blink.
+ virtual void ExecuteCustomContextMenuCommand(
+ int action, const CustomContextMenuContext& context) = 0;
+
// Views and focus -----------------------------------------------------------
+
+ // Returns the native widget that contains the contents of the tab.
+ virtual gfx::NativeView GetNativeView() = 0;
+
+ // Returns the native widget with the main content of the tab (i.e. the main
+ // render view host, though there may be many popups in the tab as children of
+ // the container).
+ virtual gfx::NativeView GetContentNativeView() = 0;
+
+ // Returns the outermost native view. This will be used as the parent for
+ // dialog boxes.
+ virtual gfx::NativeWindow GetTopLevelNativeWindow() = 0;
+
+ // Computes the rectangle for the native widget that contains the contents of
+ // the tab in the screen coordinate system.
+ virtual gfx::Rect GetContainerBounds() = 0;
+
+ // Get the bounds of the View, relative to the parent.
+ virtual gfx::Rect GetViewBounds() = 0;
+
+ // Returns the current drop data, if any.
+ virtual DropData* GetDropData() = 0;
+
+ // Sets focus to the native widget for this tab.
+ virtual void Focus() = 0;
+
+ // Sets focus to the appropriate element when the WebContents is shown the
+ // first time.
+ virtual void SetInitialFocus() = 0;
+
+ // Stores the currently focused view.
+ virtual void StoreFocus() = 0;
+
+ // Restores focus to the last focus view. If StoreFocus has not yet been
+ // invoked, SetInitialFocus is invoked.
+ virtual void RestoreFocus() = 0;
+
// Focuses the first (last if |reverse| is true) element in the page.
// Invoked when this tab is getting the focus through tab traversal (|reverse|
// is true when using Shift-Tab).
// (and what action to take regarding the selection).
virtual void StopFinding(StopFindAction action) = 0;
+ // Requests the renderer to insert CSS into the main frame's document.
+ virtual void InsertCSS(const std::string& css) = 0;
+
#if defined(OS_ANDROID)
CONTENT_EXPORT static WebContents* FromJavaWebContents(
jobject jweb_contents_android);
virtual base::android::ScopedJavaLocalRef<jobject> GetJavaWebContents() = 0;
+#elif defined(OS_MACOSX)
+ // The web contents view assumes that its view will never be overlapped by
+ // another view (either partially or fully). This allows it to perform
+ // optimizations. If the view is in a view hierarchy where it might be
+ // overlapped by another view, notify the view by calling this with |true|.
+ virtual void SetAllowOverlappingViews(bool overlapping) = 0;
+
+ // Returns true if overlapping views are allowed, false otherwise.
+ virtual bool GetAllowOverlappingViews() = 0;
+
+ // To draw two overlapping web contents view, the underlaying one should
+ // know about the overlaying one. Caller must ensure that |overlay| exists
+ // until |RemoveOverlayView| is called.
+ virtual void SetOverlayView(WebContents* overlay,
+ const gfx::Point& offset) = 0;
+
+ // Removes the previously set overlay view.
+ virtual void RemoveOverlayView() = 0;
#endif // OS_ANDROID
private: