diff options
author | polina@google.com <polina@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-27 04:24:30 +0000 |
---|---|---|
committer | polina@google.com <polina@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-27 04:24:30 +0000 |
commit | 06e0a34ae11c97e35ae67f6a006dc4a45cda58af (patch) | |
tree | a6766fa80232f512030a7c68726c5c6137e5a52d /ppapi/proxy/ppb_instance_proxy.cc | |
parent | 325e9d2d3e52b4402c82c9b3c0c2163ef0f09020 (diff) | |
download | chromium_src-06e0a34ae11c97e35ae67f6a006dc4a45cda58af.zip chromium_src-06e0a34ae11c97e35ae67f6a006dc4a45cda58af.tar.gz chromium_src-06e0a34ae11c97e35ae67f6a006dc4a45cda58af.tar.bz2 |
Add PPB_Fullscreen_Dev;0.5. Keep 0.4 for backwards compatiblity and point it
to PPB_FlashFullscreen. The new implementation is based on
http://codereview.chromium.org/7714017/ with some bug fixes.
Update header comments.
Main API differences between the old and the new implementation:
- transition from fullscreen is now asynchronous and ends at DidChangeView
just like transition to fullscreen; graphics devices cannot be bound during
the transition.
- when switching to/from fullscreen 3D resources no longer need to be
re-created.
- transitions to fullscreen are only possible when processing user user gestures.
- transition to fullscreen results in 2 DidChangeViews, one for moving the
plugin to the middle of the window and one for stretching the window and
placing the plugin in the middle of the screen.
- the size of the plugin is not changed when going to/from fullscreen.
Testing:
- Mapped ppapi_tests:test_fullscreen to ppapi_tests:test_flash_fullscreen.
- Updated test_fullscreen to work with the new implementation. To be testable
automatically this needs enhancements to the testing infrastructure
for generating user gestures. For now marked the test as DISABLED.
- Disabled NaCl's ppapi_ppb_fullscreen_browser_test for the same reasons
as above.
- To re-enable both tests, we will first need to add user gesture capabilites
to PPB_Testing.
- Build 0.4 ppapi_test:test_fullscreen and ran this out of process and in
process with the newly build revision of chrome to verify backwards
compatability.
- In a separate CL, will update NaCl's ppapi_ppb_fullscreen_browser_test to work
with the new implementation, for now only manually.
BUG=41780
TEST=see above
Review URL: http://codereview.chromium.org/7826017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@102888 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/proxy/ppb_instance_proxy.cc')
-rw-r--r-- | ppapi/proxy/ppb_instance_proxy.cc | 51 |
1 files changed, 48 insertions, 3 deletions
diff --git a/ppapi/proxy/ppb_instance_proxy.cc b/ppapi/proxy/ppb_instance_proxy.cc index 21a429a..d1fa264 100644 --- a/ppapi/proxy/ppb_instance_proxy.cc +++ b/ppapi/proxy/ppb_instance_proxy.cc @@ -87,6 +87,10 @@ bool PPB_Instance_Proxy::OnMessageReceived(const IPC::Message& msg) { OnMsgFlashSetFullscreen) IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_FlashGetScreenSize, OnMsgFlashGetScreenSize) + IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_SetFullscreen, + OnMsgSetFullscreen) + IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_GetScreenSize, + OnMsgGetScreenSize) IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_RequestInputEvents, OnMsgRequestInputEvents) IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_ClearInputEvents, @@ -181,7 +185,7 @@ void PPB_Instance_Proxy::SelectedFindResultChanged(PP_Instance instance, NOTIMPLEMENTED(); // Not proxied yet. } -PP_Bool PPB_Instance_Proxy::FlashIsFullscreen(PP_Instance instance) { +PP_Bool PPB_Instance_Proxy::IsFullscreen(PP_Instance instance) { InstanceData* data = static_cast<PluginDispatcher*>(dispatcher())-> GetInstanceData(instance); if (!data) @@ -189,6 +193,22 @@ PP_Bool PPB_Instance_Proxy::FlashIsFullscreen(PP_Instance instance) { return data->fullscreen; } +PP_Bool PPB_Instance_Proxy::FlashIsFullscreen(PP_Instance instance) { + InstanceData* data = static_cast<PluginDispatcher*>(dispatcher())-> + GetInstanceData(instance); + if (!data) + return PP_FALSE; + return data->flash_fullscreen; +} + +PP_Bool PPB_Instance_Proxy::SetFullscreen(PP_Instance instance, + PP_Bool fullscreen) { + PP_Bool result = PP_FALSE; + dispatcher()->Send(new PpapiHostMsg_PPBInstance_SetFullscreen( + INTERFACE_ID_PPB_INSTANCE, instance, fullscreen, &result)); + return result; +} + PP_Bool PPB_Instance_Proxy::FlashSetFullscreen(PP_Instance instance, PP_Bool fullscreen) { PP_Bool result = PP_FALSE; @@ -197,6 +217,14 @@ PP_Bool PPB_Instance_Proxy::FlashSetFullscreen(PP_Instance instance, return result; } +PP_Bool PPB_Instance_Proxy::GetScreenSize(PP_Instance instance, + PP_Size* size) { + PP_Bool result = PP_FALSE; + dispatcher()->Send(new PpapiHostMsg_PPBInstance_GetScreenSize( + INTERFACE_ID_PPB_INSTANCE, instance, &result, size)); + return result; +} + PP_Bool PPB_Instance_Proxy::FlashGetScreenSize(PP_Instance instance, PP_Size* size) { PP_Bool result = PP_FALSE; @@ -349,18 +377,35 @@ void PPB_Instance_Proxy::OnMsgLogWithSource(PP_Instance instance, } } +void PPB_Instance_Proxy::OnMsgSetFullscreen(PP_Instance instance, + PP_Bool fullscreen, + PP_Bool* result) { + EnterInstanceNoLock enter(instance, false); + if (enter.succeeded()) + *result = enter.functions()->SetFullscreen(instance, fullscreen); +} + + void PPB_Instance_Proxy::OnMsgFlashSetFullscreen(PP_Instance instance, PP_Bool fullscreen, PP_Bool* result) { - EnterInstanceNoLock enter(instance, false); + EnterFunctionNoLock<PPB_Instance_FunctionAPI> enter(instance, false); if (enter.succeeded()) *result = enter.functions()->FlashSetFullscreen(instance, fullscreen); } +void PPB_Instance_Proxy::OnMsgGetScreenSize(PP_Instance instance, + PP_Bool* result, + PP_Size* size) { + EnterInstanceNoLock enter(instance, false); + if (enter.succeeded()) + *result = enter.functions()->GetScreenSize(instance, size); +} + void PPB_Instance_Proxy::OnMsgFlashGetScreenSize(PP_Instance instance, PP_Bool* result, PP_Size* size) { - EnterInstanceNoLock enter(instance, false); + EnterFunctionNoLock<PPB_Instance_FunctionAPI> enter(instance, false); if (enter.succeeded()) *result = enter.functions()->FlashGetScreenSize(instance, size); } |