diff options
| author | Derek Sollenberger <djsollen@google.com> | 2010-01-12 14:08:24 -0500 |
|---|---|---|
| committer | Derek Sollenberger <djsollen@google.com> | 2010-01-12 14:08:24 -0500 |
| commit | cc0cc8081a5d609c938ee8c7165617edc0cb3159 (patch) | |
| tree | 1ecb84384ec51eee56601ee9dea1984f42ea4887 | |
| parent | 838afd1be683057ebaf5cf85359bf9a567602b7b (diff) | |
| download | external_webkit-cc0cc8081a5d609c938ee8c7165617edc0cb3159.zip external_webkit-cc0cc8081a5d609c938ee8c7165617edc0cb3159.tar.gz external_webkit-cc0cc8081a5d609c938ee8c7165617edc0cb3159.tar.bz2 | |
adding event to notify the plugin when it is on/off screen.
| -rw-r--r-- | WebKit/android/plugins/PluginWidgetAndroid.cpp | 13 | ||||
| -rw-r--r-- | WebKit/android/plugins/PluginWidgetAndroid.h | 1 | ||||
| -rw-r--r-- | WebKit/android/plugins/android_npapi.h | 10 |
3 files changed, 23 insertions, 1 deletions
diff --git a/WebKit/android/plugins/PluginWidgetAndroid.cpp b/WebKit/android/plugins/PluginWidgetAndroid.cpp index 5ee3e0f..113a3bc 100644 --- a/WebKit/android/plugins/PluginWidgetAndroid.cpp +++ b/WebKit/android/plugins/PluginWidgetAndroid.cpp @@ -53,6 +53,7 @@ PluginWidgetAndroid::PluginWidgetAndroid(WebCore::PluginView* view) m_pluginBounds.setEmpty(); m_hasFocus = false; m_isFullScreen = false; + m_visible = true; m_zoomLevel = 0; m_embeddedView = NULL; } @@ -283,6 +284,18 @@ void PluginWidgetAndroid::setVisibleScreen(const ANPRectI& visibleDocRect, float if (oldScreenW != newScreenW || oldScreenH != newScreenH) computeVisibleFrameRect(); + + bool visible = SkIRect::Intersects(m_visibleDocRect, m_pluginBounds); + if(m_visible != visible) { + // change the visibility + m_visible = visible; + // send the event + ANPEvent event; + SkANP::InitEvent(&event, kLifecycle_ANPEventType); + event.data.lifecycle.action = visible ? kOnScreen_ANPLifecycleAction + : kOffScreen_ANPLifecycleAction; + sendEvent(event); + } } void PluginWidgetAndroid::setVisibleRects(const ANPRectI rects[], int32_t count) { diff --git a/WebKit/android/plugins/PluginWidgetAndroid.h b/WebKit/android/plugins/PluginWidgetAndroid.h index c7cccd1..93ad4a8 100644 --- a/WebKit/android/plugins/PluginWidgetAndroid.h +++ b/WebKit/android/plugins/PluginWidgetAndroid.h @@ -156,6 +156,7 @@ private: SkIRect m_requestedFrameRect; bool m_hasFocus; bool m_isFullScreen; + bool m_visible; float m_zoomLevel; jobject m_embeddedView; diff --git a/WebKit/android/plugins/android_npapi.h b/WebKit/android/plugins/android_npapi.h index 10f7ac9..4173528 100644 --- a/WebKit/android/plugins/android_npapi.h +++ b/WebKit/android/plugins/android_npapi.h @@ -847,7 +847,7 @@ enum ANPLifecycleActions { /** The web view containing this plugin has been paused. See documentation on the android activity lifecycle for more information. */ - kPause_ANPLifecycleAction = 0, + kPause_ANPLifecycleAction = 0, /** The web view containing this plugin has been resumed. See documentation on the android activity lifecycle for more information. */ @@ -879,6 +879,14 @@ enum ANPLifecycleActions { its original coordinates. */ kExitFullScreen_ANPLifecycleAction = 7, + /** The plugin is visible to the user on the screen. This event will always + occur after a kOffScreen_ANPLifecycleAction event. + */ + kOnScreen_ANPLifecycleAction = 8, + /** The plugin is no longer visible to the user on the screen. This event + will always occur prior to an kOnScreen_ANPLifecycleAction event. + */ + kOffScreen_ANPLifecycleAction = 9, }; typedef uint32_t ANPLifecycleAction; |
