diff options
Diffstat (limited to 'WebKit/android')
| -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; |
