Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(157)

Unified Diff: webkit/plugins/ppapi/ppapi_plugin_instance.h

Issue 7826017: Add PPB_Fullscreen;0.5. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webkit/plugins/ppapi/ppapi_plugin_instance.h
===================================================================
--- webkit/plugins/ppapi/ppapi_plugin_instance.h (revision 99979)
+++ webkit/plugins/ppapi/ppapi_plugin_instance.h (working copy)
@@ -207,19 +207,49 @@
void Graphics3DContextLost();
+ // There are 2 implementations of the fullscreen interface. PPB_Fullscreen_Dev
+ // is used by Pepper Flash. PPB_Fullscreen is intended for other applications
+ // including NaCl. The two interface are mutually exclusive.
+
// Implementation of PPB_Fullscreen_Dev.
// Because going to fullscreen is asynchronous (but going out is not), there
// are 3 states:
- // - normal (fullscreen_container_ == NULL)
- // - fullscreen pending (fullscreen_container_ != NULL, fullscreen_ == false)
- // - fullscreen (fullscreen_container_ != NULL, fullscreen_ = true)
+ // - normal : fullscreen_container_ == NULL
+ // fullscreen_dev_ == false
+ // - fullscreen pending: fullscreen_container_ != NULL
+ // fullscreen_dev_ == false
+ // - fullscreen : fullscreen_container_ != NULL
+ // fullscreen_dev_ == true
//
// In normal state, events come from webkit and painting goes back to it.
// In fullscreen state, events come from the fullscreen container, and
- // painting goes back to it
+ // painting goes back to it.
// In pending state, events from webkit are ignored, and as soon as we receive
// events from the fullscreen container, we go to the fullscreen state.
+ bool IsFullscreenOrPending_Dev();
+
+ // Switches between fullscreen and normal mode. If |delay_report| is set to
+ // false, it may report the new state through DidChangeView immediately. If
+ // true, it will delay it. When called from the plugin, delay_report should be
+ // true to avoid re-entrancy.
+ void SetFullscreen_Dev(bool fullscreen, bool delay_report);
+
+ FullscreenContainer* fullscreen_container() const {
+ return fullscreen_container_;
+ }
+
+ // Implementation of PPB_Fullscreen.
+
+ // Because going to/from fullscreen is asynchronous, there are 4 states:
+ // - normal : desired_fullscreen_state_ == false
+ // fullscreen_ == false
+ // - fullscreen pending: desired_fullscreen_state_ == true
+ // fullscreen_ == false
+ // - fullscreen : desired_fullscreen_state_ == true
+ // fullscreen_ == true
+ // - normal pending : desired_fullscreen_state_ = false
+ // fullscreen_ = true
bool IsFullscreenOrPending();
// Switches between fullscreen and normal mode. If |delay_report| is set to
@@ -242,15 +272,11 @@
// embedded in a page).
bool IsFullPagePlugin() const;
- FullscreenContainer* fullscreen_container() const {
- return fullscreen_container_;
- }
-
// FunctionGroupBase overrides.
virtual ::ppapi::thunk::PPB_Instance_FunctionAPI* AsPPB_Instance_FunctionAPI()
OVERRIDE;
- // PPB_Instance_API implementation.
+ // PPB_Instance_FunctionAPI implementation.
virtual PP_Bool BindGraphics(PP_Instance instance,
PP_Resource device) OVERRIDE;
virtual PP_Bool IsFullFrame(PP_Instance instance) OVERRIDE;
@@ -260,9 +286,14 @@
PP_Var script,
PP_Var* exception) OVERRIDE;
virtual PP_Bool IsFullscreen(PP_Instance instance) OVERRIDE;
+ virtual PP_Bool IsFullscreen_Dev(PP_Instance instance) OVERRIDE;
virtual PP_Bool SetFullscreen(PP_Instance instance,
PP_Bool fullscreen) OVERRIDE;
+ virtual PP_Bool SetFullscreen_Dev(PP_Instance instance,
+ PP_Bool fullscreen) OVERRIDE;
virtual PP_Bool GetScreenSize(PP_Instance instance, PP_Size* size) OVERRIDE;
+ virtual PP_Bool GetScreenSize_Dev(PP_Instance instance, PP_Size* size)
+ OVERRIDE;
virtual int32_t RequestInputEvents(PP_Instance instance,
uint32_t event_classes) OVERRIDE;
virtual int32_t RequestFilteringInputEvents(PP_Instance instance,
@@ -441,12 +472,27 @@
// to use a more optimized painting path in some cases.
bool always_on_top_;
+ // Implementation of PPB_Fullscreen_Dev.
+
// Plugin container for fullscreen mode. NULL if not in fullscreen mode. Note:
// there is a transition state where fullscreen_container_ is non-NULL but
// fullscreen_ is false (see above).
FullscreenContainer* fullscreen_container_;
- // True if we are in fullscreen mode. Note: it is false during the transition.
+ // True if we are in fullscreen mode. False if we are in normal mode or
+ // in transition to fullscreen.
+ bool fullscreen_dev_;
+
+ // Implementation of PPB_Fullscreen.
+
+ // Since entering fullscreen mode is an asynchronous operation, we set this
+ // variable to the desired state at the time we issue the fullscreen change
+ // request. The plugin will receive a DidChangeView event when it goes
+ // fullscreen.
+ bool desired_fullscreen_state_;
+
+ // True if we are in fullscreen mode. False if we are in normal mode.
+ // It reflects the previous state when in transition.
bool fullscreen_;
// The MessageChannel used to implement bidirectional postMessage for the

Powered by Google App Engine
This is Rietveld 408576698