summaryrefslogtreecommitdiffstats
path: root/WebKit/android/plugins/PluginWidgetAndroid.h
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2011-05-13 16:40:46 +0100
committerBen Murdoch <benm@google.com>2011-05-16 11:35:03 +0100
commita2c606d1d8312a5d063e4a11e5911d9c8e4a3d19 (patch)
tree614d69ba96a23bc057e539a3c8a7d4961a68254b /WebKit/android/plugins/PluginWidgetAndroid.h
parent65f03d4f644ce73618e5f4f50dd694b26f55ae12 (diff)
downloadexternal_webkit-a2c606d1d8312a5d063e4a11e5911d9c8e4a3d19.zip
external_webkit-a2c606d1d8312a5d063e4a11e5911d9c8e4a3d19.tar.gz
external_webkit-a2c606d1d8312a5d063e4a11e5911d9c8e4a3d19.tar.bz2
Merge WebKit at r75993: Move WebKit/android files to Source
Change-Id: Ifa871f8320bdb3a09fe189fffecc23f702c394b9
Diffstat (limited to 'WebKit/android/plugins/PluginWidgetAndroid.h')
-rw-r--r--WebKit/android/plugins/PluginWidgetAndroid.h219
1 files changed, 0 insertions, 219 deletions
diff --git a/WebKit/android/plugins/PluginWidgetAndroid.h b/WebKit/android/plugins/PluginWidgetAndroid.h
deleted file mode 100644
index 5d586b1..0000000
--- a/WebKit/android/plugins/PluginWidgetAndroid.h
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * Copyright 2008, The Android Open Source Project
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef PluginWidgetAndroid_H
-#define PluginWidgetAndroid_H
-
-#include "android_npapi.h"
-#include "ANPSystem_npapi.h"
-#include "IntPoint.h"
-#include "IntRect.h"
-#include "MediaLayer.h"
-#include "SkRect.h"
-#include <jni.h>
-
-namespace WebCore {
- class PluginView;
-}
-
-namespace android {
- class PluginSurface;
- class WebViewCore;
-}
-
-class SkCanvas;
-class SkFlipPixelRef;
-
-/*
- This is our extended state in a PluginView. This object is created and
- kept insync with the PluginView, but is also available to WebViewCore
- to allow its draw() method to be called from outside of the PluginView.
- */
-struct PluginWidgetAndroid {
- // initialize with our host pluginview. This will delete us when it is
- // destroyed.
- PluginWidgetAndroid(WebCore::PluginView* view);
- ~PluginWidgetAndroid();
-
- WebCore::PluginView* pluginView() const { return m_pluginView; }
-
- // Needed by PluginSurface to manage the java SurfaceView.
- android::WebViewCore* webViewCore() const { return m_core; }
-
- /* Can't determine our core at construction time, so PluginView calls this
- as soon as it has a parent.
- */
- void init(android::WebViewCore*);
- /* Called each time the PluginView gets a new size or position.
- */
- void setWindow(NPWindow* window, bool isTransparent);
-
- /* Called whenever the plugin itself requests a new drawing model. If the
- hardware does not support the requested model then false is returned,
- otherwise true is returned.
- */
- bool setDrawingModel(ANPDrawingModel);
-
- /* Called to check if the plugin is running in "windowed" mode (i.e. surface
- view).
- */
- bool isSurfaceDrawingModel() const { return kSurface_ANPDrawingModel == m_drawingModel; }
-
- bool isOpenGLDrawingModel() const { return kOpenGL_ANPDrawingModel == m_drawingModel; }
-
- /* Returns true (and optionally updates rect with the dirty bounds in the
- page coordinate) if the plugin has invalidate us.
- */
- bool isDirty(SkIRect* dirtyBounds = NULL) const;
- /* Called by PluginView to invalidate a portion of the plugin area (in
- local plugin coordinates). If signalRedraw is true, this also triggers
- a subsequent call to draw(NULL).
- */
- void inval(const WebCore::IntRect&, bool signalRedraw);
-
- /* Called to draw into the plugin's bitmap. If canvas is non-null, the
- bitmap itself is then drawn into the canvas.
- */
- void draw(SkCanvas* canvas = NULL);
-
- /* Send this event to the plugin instance. A non-zero value will be
- returned if the plugin handled the event.
- */
- int16_t sendEvent(const ANPEvent&);
-
- /* Update the plugins event flags. If a flag is set to true then the plugin
- wants to be notified of events of this type.
- */
- void updateEventFlags(ANPEventFlags);
-
- /* Called to check if a plugin wants to accept a given event type. It
- returns true if the plugin wants the events and false otherwise.
- */
- bool isAcceptingEvent(ANPEventFlag);
-
- /* Notify the plugin of the currently visible screen coordinates (document
- space) and the current zoom level.
- */
- void setVisibleScreen(const ANPRectI& visibleScreenRect, float zoom);
-
- /** Returns a rectangle representing the visible area of the plugin on
- screen. The coordinates are relative to the size of the plugin in the
- document and will not be negative or exceed the plugin's size.
- */
- ANPRectI visibleRect();
-
- /** Registers a set of rectangles that the plugin would like to keep on
- screen. The rectangles are listed in order of priority with the highest
- priority rectangle in location rects[0]. The browser will attempt to keep
- as many of the rectangles on screen as possible and will scroll them into
- view in response to the invocation of this method and other various events.
- The count specifies how many rectangles are in the array. If the count is
- zero it signals the plugin that any existing rectangles should be cleared
- and no rectangles will be tracked.
- */
- void setVisibleRects(const ANPRectI rects[], int32_t count);
-
- /** Called when a plugin wishes to enter into full screen mode. It invokes
- the plugin's Java class (defined in the plugin's apk manifest), which is
- called asynchronously and provides a View to be displayed full screen.
- */
- void requestFullScreen();
-
- /** Called when a plugin wishes to exit from full screen mode. As a result,
- the plugin's full-screen view is discarded by the view system. It is also
- called in order to notify the native code that the browser has discarded
- the view.
- */
- void exitFullScreen(bool pluginInitiated);
-
- bool inFullScreen() { return m_isFullScreen; }
-
- /** Called to check if a plugin currently has document focus, which is
- required for certain operations (e.g. show/hide keyboard). It returns
- true if the plugin currently has focus and false otherwise.
- */
- bool hasFocus() const { return m_hasFocus; }
-
- /** Called to ensure the surface is being correctly displayed within the
- view hierarchy. For instance, if the visibility of the plugin has
- changed then we need to ensure the surface is added or removed from the
- view system.
- */
- void layoutSurface(bool pluginBoundsChanged = false);
-
- /** send the surface the currently visible portion of the plugin. This is not
- the portion of the plugin visible on the screen but rather the portion of
- the plugin that is not obscured by other HTML content.
- */
- void setSurfaceClip(const SkIRect& clip);
-
- /** Called when a plugin wishes to be zoomed and centered in the current view.
- */
- void requestCenterFitZoom();
-
- WebCore::MediaLayer* getLayer() const { return m_layer; }
-
- void setPowerState(ANPPowerState powerState);
-
- void viewInvalidate();
-
-private:
- void computeVisiblePluginRect();
- void scrollToVisiblePluginRect();
- void sendSizeAndVisibilityEvents(const bool updateDimensions);
-
- WebCore::MediaLayer* m_layer;
-
- WebCore::PluginView* m_pluginView;
- android::WebViewCore* m_core;
- SkFlipPixelRef* m_flipPixelRef;
- ANPDrawingModel m_drawingModel;
- ANPEventFlags m_eventFlags;
- NPWindow* m_pluginWindow;
- SkIRect m_pluginBounds; // relative to the page
- SkIRect m_visibleDocRect; // relative to the page
- SkIRect m_requestedVisibleRect; // relative to the page
- bool m_hasFocus;
- bool m_isFullScreen;
- bool m_visible;
- float m_cachedZoomLevel; // used for comparison only
- jobject m_embeddedView;
- bool m_embeddedViewAttached;
- bool m_acceptEvents;
- bool m_isSurfaceClippedOut;
- ANPPowerState m_powerState;
-
- /* We limit the number of rectangles to minimize storage and ensure adequate
- speed.
- */
- enum {
- MAX_REQUESTED_RECTS = 5,
- };
-
- ANPRectI m_requestedVisibleRects[MAX_REQUESTED_RECTS];
- int32_t m_requestedVisibleRectCount;
-};
-
-#endif