/*
* Copyright (C) 2009 Google Inc. All rights reserved.
+ * Copyright (C) 2014 Opera Software ASA. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
#ifndef WebPluginContainerImpl_h
#define WebPluginContainerImpl_h
+#include "core/frame/FrameDestructionObserver.h"
#include "core/plugins/PluginView.h"
#include "platform/Widget.h"
#include "public/web/WebPluginContainer.h"
struct NPObject;
-namespace WebCore {
+namespace blink {
+
class GestureEvent;
class HTMLPlugInElement;
class IntRect;
class PlatformGestureEvent;
class ResourceError;
class ResourceResponse;
-class TouchEvent;
-class WheelEvent;
-class Widget;
-}
-
-namespace blink {
-
-struct WebPrintParams;
-
class ScrollbarGroup;
+class TouchEvent;
class WebPlugin;
class WebPluginLoadObserver;
class WebExternalTextureLayer;
+class WheelEvent;
+class Widget;
+struct WebPrintParams;
-class WebPluginContainerImpl FINAL : public WebCore::PluginView, public WebPluginContainer {
+class WebPluginContainerImpl FINAL : public PluginView, public WebPluginContainer, public FrameDestructionObserver {
public:
- static PassRefPtr<WebPluginContainerImpl> create(WebCore::HTMLPlugInElement* element, WebPlugin* webPlugin)
+ static PassRefPtr<WebPluginContainerImpl> create(HTMLPlugInElement* element, WebPlugin* webPlugin)
{
return adoptRef(new WebPluginContainerImpl(element, webPlugin));
}
// PluginView methods
virtual WebLayer* platformLayer() const OVERRIDE;
- virtual NPObject* scriptableObject() OVERRIDE;
+ virtual v8::Local<v8::Object> scriptableObject(v8::Isolate*) OVERRIDE;
virtual bool getFormValue(String&) OVERRIDE;
virtual bool supportsKeyboardFocus() const OVERRIDE;
virtual bool supportsInputMethod() const OVERRIDE;
virtual bool wantsWheelEvents() OVERRIDE;
// Widget methods
- virtual void setFrameRect(const WebCore::IntRect&) OVERRIDE;
- virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect&) OVERRIDE;
- virtual void invalidateRect(const WebCore::IntRect&) OVERRIDE;
+ virtual void setFrameRect(const IntRect&) OVERRIDE;
+ virtual void paint(GraphicsContext*, const IntRect&) OVERRIDE;
+ virtual void invalidateRect(const IntRect&) OVERRIDE;
virtual void setFocus(bool) OVERRIDE;
virtual void show() OVERRIDE;
virtual void hide() OVERRIDE;
- virtual void handleEvent(WebCore::Event*) OVERRIDE;
+ virtual void handleEvent(Event*) OVERRIDE;
virtual void frameRectsChanged() OVERRIDE;
virtual void setParentVisible(bool) OVERRIDE;
- virtual void setParent(WebCore::Widget*) OVERRIDE;
+ virtual void setParent(Widget*) OVERRIDE;
virtual void widgetPositionsUpdated() OVERRIDE;
virtual bool isPluginContainer() const OVERRIDE { return true; }
virtual void eventListenersRemoved() OVERRIDE;
virtual WebElement element() OVERRIDE;
virtual void invalidate() OVERRIDE;
virtual void invalidateRect(const WebRect&) OVERRIDE;
- virtual void scrollRect(int dx, int dy, const WebRect&) OVERRIDE;
+ virtual void scrollRect(const WebRect&) OVERRIDE;
virtual void reportGeometry() OVERRIDE;
virtual void allowScriptObjects() OVERRIDE;
virtual void clearScriptObjects() OVERRIDE;
virtual NPObject* scriptableObjectForElement() OVERRIDE;
+ virtual v8::Local<v8::Object> v8ObjectForElement() OVERRIDE;
virtual WebString executeScriptURL(const WebURL&, bool popupsAllowed) OVERRIDE;
virtual void loadFrameRequest(const WebURLRequest&, const WebString& target, bool notifyNeeded, void* notifyData) OVERRIDE;
virtual void zoomLevelChanged(double zoomLevel) OVERRIDE;
// If the plugin content should not be scaled to the printable area of
// the page, then this method should return true.
bool isPrintScalingDisabled() const;
+ // Returns number of copies to be printed.
+ int getCopiesToPrint() const;
// Sets up printing at the specified WebPrintParams. Returns the number of pages to be printed at these settings.
int printBegin(const WebPrintParams&) const;
// Prints the page specified by pageNumber (0-based index) into the supplied canvas.
- bool printPage(int pageNumber, WebCore::GraphicsContext* gc);
+ bool printPage(int pageNumber, GraphicsContext*);
// Ends the print operation.
void printEnd();
bool executeEditCommand(const WebString& name, const WebString& value);
// Resource load events for the plugin's source data:
- virtual void didReceiveResponse(const WebCore::ResourceResponse&) OVERRIDE;
+ virtual void didReceiveResponse(const ResourceResponse&) OVERRIDE;
virtual void didReceiveData(const char *data, int dataLength) OVERRIDE;
virtual void didFinishLoading() OVERRIDE;
- virtual void didFailLoading(const WebCore::ResourceError&) OVERRIDE;
+ virtual void didFailLoading(const ResourceError&) OVERRIDE;
void willDestroyPluginLoadObserver(WebPluginLoadObserver*);
void willStartLiveResize();
void willEndLiveResize();
- bool paintCustomOverhangArea(WebCore::GraphicsContext*, const WebCore::IntRect&, const WebCore::IntRect&, const WebCore::IntRect&);
+ bool paintCustomOverhangArea(GraphicsContext*, const IntRect&, const IntRect&, const IntRect&);
+
+#if ENABLE(OILPAN)
+ virtual void detach() OVERRIDE;
+#endif
private:
- WebPluginContainerImpl(WebCore::HTMLPlugInElement* element, WebPlugin* webPlugin);
+ WebPluginContainerImpl(HTMLPlugInElement*, WebPlugin*);
virtual ~WebPluginContainerImpl();
- void handleMouseEvent(WebCore::MouseEvent*);
- void handleDragEvent(WebCore::MouseEvent*);
- void handleWheelEvent(WebCore::WheelEvent*);
- void handleKeyboardEvent(WebCore::KeyboardEvent*);
- void handleTouchEvent(WebCore::TouchEvent*);
- void handleGestureEvent(WebCore::GestureEvent*);
+ void handleMouseEvent(MouseEvent*);
+ void handleDragEvent(MouseEvent*);
+ void handleWheelEvent(WheelEvent*);
+ void handleKeyboardEvent(KeyboardEvent*);
+ void handleTouchEvent(TouchEvent*);
+ void handleGestureEvent(GestureEvent*);
- void synthesizeMouseEventIfPossible(WebCore::TouchEvent*);
+ void synthesizeMouseEventIfPossible(TouchEvent*);
void focusPlugin();
- void calculateGeometry(const WebCore::IntRect& frameRect,
- WebCore::IntRect& windowRect,
- WebCore::IntRect& clipRect,
- Vector<WebCore::IntRect>& cutOutRects);
- WebCore::IntRect windowClipRect() const;
- void windowCutOutRects(const WebCore::IntRect& frameRect,
- Vector<WebCore::IntRect>& cutOutRects);
-
- WebCore::HTMLPlugInElement* m_element;
+ void calculateGeometry(
+ const IntRect& frameRect,
+ IntRect& windowRect,
+ IntRect& clipRect,
+ Vector<IntRect>& cutOutRects);
+ IntRect windowClipRect() const;
+ void windowCutOutRects(
+ const IntRect& frameRect,
+ Vector<IntRect>& cutOutRects);
+
+ // FIXME: Oilpan: consider moving Widget to the heap and turn this
+ // into a traced member. For the time being, it is a bare pointer
+ // of its owning PlugInElement and managed as such.
+ HTMLPlugInElement* m_element;
WebPlugin* m_webPlugin;
Vector<WebPluginLoadObserver*> m_pluginLoadObservers;
bool m_wantsWheelEvents;
};
-DEFINE_TYPE_CASTS(WebPluginContainerImpl, WebCore::Widget, widget, widget->isPluginContainer(), widget.isPluginContainer());
+DEFINE_TYPE_CASTS(WebPluginContainerImpl, Widget, widget, widget->isPluginContainer(), widget.isPluginContainer());
// Unlike Widget, we need not worry about object type for container.
// WebPluginContainerImpl is the only subclass of WebPluginContainer.
DEFINE_TYPE_CASTS(WebPluginContainerImpl, WebPluginContainer, container, true, true);