diff options
author | raymes@chromium.org <raymes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-30 01:55:44 +0000 |
---|---|---|
committer | raymes@chromium.org <raymes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-30 01:55:44 +0000 |
commit | 22fdaa65859604b35e1196cfe568e020f71310f3 (patch) | |
tree | a9fd75cc2e83b507f8c4d91b7db5d5becda62cb3 /ppapi | |
parent | f511afb6940373a304131e0a547bcfe17749d0db (diff) | |
download | chromium_src-22fdaa65859604b35e1196cfe568e020f71310f3.zip chromium_src-22fdaa65859604b35e1196cfe568e020f71310f3.tar.gz chromium_src-22fdaa65859604b35e1196cfe568e020f71310f3.tar.bz2 |
Refactor PPB_Flash_Fullscreen to the new resource model.
This moves PPB_Flash_Fullscreen to the new ppapi resource model and removes the in-process implementation.
BUG=
Review URL: https://chromiumcodereview.appspot.com/11421066
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@170346 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi')
-rw-r--r-- | ppapi/ppapi_proxy.gypi | 3 | ||||
-rw-r--r-- | ppapi/ppapi_shared.gypi | 2 | ||||
-rw-r--r-- | ppapi/proxy/flash_fullscreen_resource.cc | 46 | ||||
-rw-r--r-- | ppapi/proxy/flash_fullscreen_resource.h | 43 | ||||
-rw-r--r-- | ppapi/proxy/plugin_dispatcher.cc | 3 | ||||
-rw-r--r-- | ppapi/proxy/plugin_dispatcher.h | 2 | ||||
-rw-r--r-- | ppapi/proxy/ppapi_messages.h | 13 | ||||
-rw-r--r-- | ppapi/proxy/ppapi_proxy_test.cc | 4 | ||||
-rw-r--r-- | ppapi/proxy/ppb_flash_proxy.cc | 53 | ||||
-rw-r--r-- | ppapi/proxy/ppb_flash_proxy.h | 11 | ||||
-rw-r--r-- | ppapi/proxy/ppb_instance_proxy.cc | 20 | ||||
-rw-r--r-- | ppapi/proxy/ppb_instance_proxy.h | 1 | ||||
-rw-r--r-- | ppapi/proxy/ppp_instance_proxy.cc | 38 | ||||
-rw-r--r-- | ppapi/shared_impl/resource.h | 1 | ||||
-rw-r--r-- | ppapi/shared_impl/singleton_resource_id.h | 3 | ||||
-rw-r--r-- | ppapi/thunk/enter.h | 5 | ||||
-rw-r--r-- | ppapi/thunk/ppb_flash_api.h | 6 | ||||
-rw-r--r-- | ppapi/thunk/ppb_flash_fullscreen_api.h | 35 | ||||
-rw-r--r-- | ppapi/thunk/ppb_flash_fullscreen_thunk.cc | 15 | ||||
-rw-r--r-- | ppapi/thunk/ppb_instance_api.h | 5 |
20 files changed, 194 insertions, 115 deletions
diff --git a/ppapi/ppapi_proxy.gypi b/ppapi/ppapi_proxy.gypi index 6db746c..32796e1 100644 --- a/ppapi/ppapi_proxy.gypi +++ b/ppapi/ppapi_proxy.gypi @@ -39,6 +39,8 @@ 'proxy/flash_device_id_resource.h', 'proxy/flash_font_file_resource.cc', 'proxy/flash_font_file_resource.h', + 'proxy/flash_fullscreen_resource.cc', + 'proxy/flash_fullscreen_resource.h', 'proxy/flash_menu_resource.cc', 'proxy/flash_menu_resource.h', 'proxy/flash_resource.cc', @@ -183,6 +185,7 @@ 'proxy/flash_clipboard_resource.cc', 'proxy/flash_device_id_resource.cc', 'proxy/flash_font_file_resource.cc', + 'proxy/flash_fullscreen_resource.cc', 'proxy/flash_menu_resource.cc', 'proxy/flash_resource.cc', 'proxy/host_dispatcher.cc', diff --git a/ppapi/ppapi_shared.gypi b/ppapi/ppapi_shared.gypi index 461108f..da446ef 100644 --- a/ppapi/ppapi_shared.gypi +++ b/ppapi/ppapi_shared.gypi @@ -162,6 +162,7 @@ 'thunk/ppb_file_system_thunk.cc', 'thunk/ppb_find_thunk.cc', 'thunk/ppb_flash_api.h', + 'thunk/ppb_flash_clipboard_api.h', 'thunk/ppb_flash_clipboard_thunk.cc', 'thunk/ppb_flash_device_id_api.h', 'thunk/ppb_flash_device_id_thunk.cc', @@ -169,6 +170,7 @@ 'thunk/ppb_flash_file_modulelocal_thunk.cc', 'thunk/ppb_flash_font_file_api.h', 'thunk/ppb_flash_font_file_thunk.cc', + 'thunk/ppb_flash_fullscreen_api.h', 'thunk/ppb_flash_fullscreen_thunk.cc', 'thunk/ppb_flash_functions_api.h', 'thunk/ppb_flash_menu_api.h', diff --git a/ppapi/proxy/flash_fullscreen_resource.cc b/ppapi/proxy/flash_fullscreen_resource.cc new file mode 100644 index 0000000..90a68fc --- /dev/null +++ b/ppapi/proxy/flash_fullscreen_resource.cc @@ -0,0 +1,46 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ppapi/proxy/flash_fullscreen_resource.h" + +#include "ppapi/c/pp_bool.h" +#include "ppapi/proxy/ppapi_messages.h" + +namespace ppapi { +namespace proxy { + +FlashFullscreenResource::FlashFullscreenResource(Connection connection, + PP_Instance instance) + : PluginResource(connection, instance), + is_fullscreen_(PP_FALSE) { +} + +FlashFullscreenResource::~FlashFullscreenResource() { +} + +thunk::PPB_Flash_Fullscreen_API* +FlashFullscreenResource::AsPPB_Flash_Fullscreen_API() { + return this; +} + +PP_Bool FlashFullscreenResource::IsFullscreen(PP_Instance instance) { + return is_fullscreen_; +} + +PP_Bool FlashFullscreenResource::SetFullscreen(PP_Instance instance, + PP_Bool fullscreen) { + if (!sent_create_to_renderer()) + SendCreate(RENDERER, PpapiHostMsg_FlashFullscreen_Create()); + int32_t result = SyncCall<IPC::Message>(RENDERER, + PpapiHostMsg_FlashFullscreen_SetFullscreen(PP_ToBool(fullscreen))); + return PP_FromBool(result == PP_OK); +} + +void FlashFullscreenResource::SetLocalIsFullscreen(PP_Instance instance, + PP_Bool is_fullscreen) { + is_fullscreen_ = is_fullscreen; +} + +} // namespace proxy +} // namespace ppapi diff --git a/ppapi/proxy/flash_fullscreen_resource.h b/ppapi/proxy/flash_fullscreen_resource.h new file mode 100644 index 0000000..c6d5ccb --- /dev/null +++ b/ppapi/proxy/flash_fullscreen_resource.h @@ -0,0 +1,43 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef PPAPI_PROXY_FLASH_FULLSCREEN_RESOURCE_H_ +#define PPAPI_PROXY_FLASH_FULLSCREEN_RESOURCE_H_ + +#include "ppapi/proxy/connection.h" +#include "ppapi/proxy/plugin_resource.h" +#include "ppapi/thunk/ppb_flash_fullscreen_api.h" + +namespace ppapi { +namespace proxy { + +class FlashFullscreenResource + : public PluginResource, + public thunk::PPB_Flash_Fullscreen_API { + public: + FlashFullscreenResource(Connection connection, + PP_Instance instance); + virtual ~FlashFullscreenResource(); + + // Resource overrides. + virtual thunk::PPB_Flash_Fullscreen_API* + AsPPB_Flash_Fullscreen_API() OVERRIDE; + + // PPB_Flash_Fullscreen_API implementation. + virtual PP_Bool IsFullscreen(PP_Instance instance) OVERRIDE; + virtual PP_Bool SetFullscreen(PP_Instance instance, + PP_Bool fullscreen) OVERRIDE; + virtual void SetLocalIsFullscreen(PP_Instance instance, + PP_Bool is_fullscreen) OVERRIDE; + + private: + PP_Bool is_fullscreen_; + + DISALLOW_COPY_AND_ASSIGN(FlashFullscreenResource); +}; + +} // namespace proxy +} // namespace ppapi + +#endif // PPAPI_PROXY_FLASH_FULLSCREEN_RESOURCE_H_ diff --git a/ppapi/proxy/plugin_dispatcher.cc b/ppapi/proxy/plugin_dispatcher.cc index 137031d..0198b6b 100644 --- a/ppapi/proxy/plugin_dispatcher.cc +++ b/ppapi/proxy/plugin_dispatcher.cc @@ -50,8 +50,7 @@ DispatcherSet* g_live_dispatchers = NULL; } // namespace InstanceData::InstanceData() - : flash_fullscreen(PP_FALSE), - is_request_surrounding_text_pending(false), + : is_request_surrounding_text_pending(false), should_do_request_surrounding_text(false) { } diff --git a/ppapi/proxy/plugin_dispatcher.h b/ppapi/proxy/plugin_dispatcher.h index f944d45..98f43a6 100644 --- a/ppapi/proxy/plugin_dispatcher.h +++ b/ppapi/proxy/plugin_dispatcher.h @@ -47,8 +47,6 @@ struct InstanceData { ViewData view; - PP_Bool flash_fullscreen; // Used for PPB_FlashFullscreen. - // When non-NULL, indicates the callback to execute when mouse lock is lost. scoped_refptr<TrackedCallback> mouse_lock_callback; diff --git a/ppapi/proxy/ppapi_messages.h b/ppapi/proxy/ppapi_messages.h index 2bec742..5aa940c 100644 --- a/ppapi/proxy/ppapi_messages.h +++ b/ppapi/proxy/ppapi_messages.h @@ -1279,14 +1279,6 @@ IPC_SYNC_MESSAGE_ROUTED2_1(PpapiHostMsg_PPBFlash_IsRectTopmost, PP_Instance /* instance */, PP_Rect /* rect */, PP_Bool /* result */) -IPC_SYNC_MESSAGE_ROUTED2_1(PpapiHostMsg_PPBFlash_FlashSetFullscreen, - PP_Instance /* instance */, - PP_Bool /* fullscreen */, - PP_Bool /* result */) -IPC_SYNC_MESSAGE_ROUTED1_2(PpapiHostMsg_PPBFlash_FlashGetScreenSize, - PP_Instance /* instance */, - PP_Bool /* result */, - PP_Size /* size */) IPC_MESSAGE_ROUTED0(PpapiHostMsg_PPBFlash_UpdateActivity) IPC_SYNC_MESSAGE_ROUTED3_2(PpapiHostMsg_PPBFlash_OpenFileRef, PP_Instance /* instance */, @@ -1633,6 +1625,11 @@ IPC_MESSAGE_CONTROL1(PpapiHostMsg_FlashFontFile_GetFontTable, IPC_MESSAGE_CONTROL1(PpapiPluginMsg_FlashFontFile_GetFontTableReply, std::string /* output */) +// Flash fullscreen. +IPC_MESSAGE_CONTROL0(PpapiHostMsg_FlashFullscreen_Create) +IPC_MESSAGE_CONTROL1(PpapiHostMsg_FlashFullscreen_SetFullscreen, + bool /* fullscreen */) + // FlashMenu ------------------------------------------------------------------ // Creates the flash menu with the given data. diff --git a/ppapi/proxy/ppapi_proxy_test.cc b/ppapi/proxy/ppapi_proxy_test.cc index 52fe44b..117a80c 100644 --- a/ppapi/proxy/ppapi_proxy_test.cc +++ b/ppapi/proxy/ppapi_proxy_test.cc @@ -175,7 +175,6 @@ void PluginProxyTestHarness::SetUpHarness() { PpapiPermissions(), false)); plugin_dispatcher_->InitWithTestSink(&sink()); - plugin_dispatcher_->DidCreateInstance(pp_instance()); // The plugin proxy delegate is needed for // |PluginProxyDelegate::GetBrowserSender| which is used // in |ResourceCreationProxy::GetConnection| to get the channel to the @@ -183,6 +182,7 @@ void PluginProxyTestHarness::SetUpHarness() { // for test purposes. plugin_delegate_mock_.set_browser_sender(plugin_dispatcher_.get()); PluginGlobals::Get()->set_plugin_proxy_delegate(&plugin_delegate_mock_); + plugin_dispatcher_->DidCreateInstance(pp_instance()); } void PluginProxyTestHarness::SetUpHarnessWithChannel( @@ -204,6 +204,8 @@ void PluginProxyTestHarness::SetUpHarnessWithChannel( plugin_dispatcher_->InitPluginWithChannel(&plugin_delegate_mock_, channel_handle, is_client); + plugin_delegate_mock_.set_browser_sender(plugin_dispatcher_.get()); + PluginGlobals::Get()->set_plugin_proxy_delegate(&plugin_delegate_mock_); plugin_dispatcher_->DidCreateInstance(pp_instance()); } diff --git a/ppapi/proxy/ppb_flash_proxy.cc b/ppapi/proxy/ppb_flash_proxy.cc index 494d948..0846dde 100644 --- a/ppapi/proxy/ppb_flash_proxy.cc +++ b/ppapi/proxy/ppb_flash_proxy.cc @@ -113,10 +113,6 @@ bool PPB_Flash_Proxy::OnMessageReceived(const IPC::Message& msg) { OnHostMsgGetLocalTimeZoneOffset) IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_IsRectTopmost, OnHostMsgIsRectTopmost) - IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_FlashSetFullscreen, - OnHostMsgFlashSetFullscreen) - IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_FlashGetScreenSize, - OnHostMsgFlashGetScreenSize) IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_OpenFileRef, OnHostMsgOpenFileRef) IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlash_QueryFileRef, @@ -494,30 +490,6 @@ int32_t PPB_Flash_Proxy::QueryFileRef(PP_Instance instance, return result; } -PP_Bool PPB_Flash_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_Flash_Proxy::FlashSetFullscreen(PP_Instance instance, - PP_Bool fullscreen) { - PP_Bool result = PP_FALSE; - dispatcher()->Send(new PpapiHostMsg_PPBFlash_FlashSetFullscreen( - API_ID_PPB_FLASH, instance, fullscreen, &result)); - return result; -} - -PP_Bool PPB_Flash_Proxy::FlashGetScreenSize(PP_Instance instance, - PP_Size* size) { - PP_Bool result = PP_FALSE; - dispatcher()->Send(new PpapiHostMsg_PPBFlash_FlashGetScreenSize( - API_ID_PPB_FLASH, instance, &result, size)); - return result; -} - void PPB_Flash_Proxy::OnHostMsgSetInstanceAlwaysOnTop(PP_Instance instance, PP_Bool on_top) { EnterInstanceNoLock enter(instance); @@ -621,31 +593,6 @@ void PPB_Flash_Proxy::OnHostMsgIsRectTopmost(PP_Instance instance, *result = PP_FALSE; } -void PPB_Flash_Proxy::OnHostMsgFlashSetFullscreen(PP_Instance instance, - PP_Bool fullscreen, - PP_Bool* result) { - EnterInstanceNoLock enter(instance); - if (enter.succeeded()) { - *result = enter.functions()->GetFlashAPI()->FlashSetFullscreen( - instance, fullscreen); - } else { - *result = PP_FALSE; - } -} - -void PPB_Flash_Proxy::OnHostMsgFlashGetScreenSize(PP_Instance instance, - PP_Bool* result, - PP_Size* size) { - EnterInstanceNoLock enter(instance); - if (enter.succeeded()) { - *result = enter.functions()->GetFlashAPI()->FlashGetScreenSize( - instance, size); - } else { - size->width = 0; - size->height = 0; - } -} - void PPB_Flash_Proxy::OnHostMsgOpenFileRef( PP_Instance instance, const HostResource& host_resource, diff --git a/ppapi/proxy/ppb_flash_proxy.h b/ppapi/proxy/ppb_flash_proxy.h index 1c644bf..faf4488 100644 --- a/ppapi/proxy/ppb_flash_proxy.h +++ b/ppapi/proxy/ppb_flash_proxy.h @@ -111,11 +111,6 @@ class PPB_Flash_Proxy : public InterfaceProxy, public PPB_Flash_Shared { virtual int32_t QueryFileRef(PP_Instance instance, PP_Resource file_ref, PP_FileInfo* info) OVERRIDE; - virtual PP_Bool FlashIsFullscreen(PP_Instance instance) OVERRIDE; - virtual PP_Bool FlashSetFullscreen(PP_Instance instance, - PP_Bool fullscreen) OVERRIDE; - virtual PP_Bool FlashGetScreenSize(PP_Instance instance, - PP_Size* size) OVERRIDE; static const ApiID kApiID = API_ID_PPB_FLASH; @@ -139,12 +134,6 @@ class PPB_Flash_Proxy : public InterfaceProxy, public PPB_Flash_Shared { void OnHostMsgIsRectTopmost(PP_Instance instance, PP_Rect rect, PP_Bool* result); - void OnHostMsgFlashSetFullscreen(PP_Instance instance, - PP_Bool fullscreen, - PP_Bool* result); - void OnHostMsgFlashGetScreenSize(PP_Instance instance, - PP_Bool* result, - PP_Size* size); void OnHostMsgOpenFileRef(PP_Instance instance, const ppapi::HostResource& host_resource, int32_t mode, diff --git a/ppapi/proxy/ppb_instance_proxy.cc b/ppapi/proxy/ppb_instance_proxy.cc index 603e34d..9c69bbd 100644 --- a/ppapi/proxy/ppb_instance_proxy.cc +++ b/ppapi/proxy/ppb_instance_proxy.cc @@ -17,6 +17,7 @@ #include "ppapi/proxy/content_decryptor_private_serializer.h" #include "ppapi/proxy/enter_proxy.h" #include "ppapi/proxy/flash_clipboard_resource.h" +#include "ppapi/proxy/flash_fullscreen_resource.h" #include "ppapi/proxy/flash_resource.h" #include "ppapi/proxy/gamepad_resource.h" #include "ppapi/proxy/host_dispatcher.h" @@ -249,6 +250,13 @@ const ViewData* PPB_Instance_Proxy::GetViewData(PP_Instance instance) { return &data->view; } +PP_Bool PPB_Instance_Proxy::FlashIsFullscreen(PP_Instance instance) { + // This function is only used for proxying in the renderer process. It is not + // implemented in the plugin process. + NOTREACHED(); + return PP_FALSE; +} + PP_Var PPB_Instance_Proxy::GetWindowObject(PP_Instance instance) { ReceiveSerializedVarReturnValue result; dispatcher()->Send(new PpapiHostMsg_PPBInstance_GetWindowObject( @@ -372,15 +380,19 @@ Resource* PPB_Instance_Proxy::GetSingletonResource(PP_Instance instance, break; // Flash resources aren't needed for NaCl. #if !defined(OS_NACL) && !defined(NACL_WIN64) - case FLASH_SINGLETON_ID: - new_singleton = new FlashResource(connection, instance); - break; case FLASH_CLIPBOARD_SINGLETON_ID: new_singleton = new FlashClipboardResource(connection, instance); break; -#else + case FLASH_FULLSCREEN_SINGLETON_ID: + new_singleton = new FlashFullscreenResource(connection, instance); + break; case FLASH_SINGLETON_ID: + new_singleton = new FlashResource(connection, instance); + break; +#else case FLASH_CLIPBOARD_SINGLETON_ID: + case FLASH_FULLSCREEN_SINGLETON_ID: + case FLASH_SINGLETON_ID: NOTREACHED(); break; #endif // !defined(OS_NACL) && !defined(NACL_WIN64) diff --git a/ppapi/proxy/ppb_instance_proxy.h b/ppapi/proxy/ppb_instance_proxy.h index ca7f4af..7879f21 100644 --- a/ppapi/proxy/ppb_instance_proxy.h +++ b/ppapi/proxy/ppb_instance_proxy.h @@ -50,6 +50,7 @@ class PPB_Instance_Proxy : public InterfaceProxy, PP_Resource device) OVERRIDE; virtual PP_Bool IsFullFrame(PP_Instance instance) OVERRIDE; virtual const ViewData* GetViewData(PP_Instance instance) OVERRIDE; + virtual PP_Bool FlashIsFullscreen(PP_Instance instance) OVERRIDE; virtual PP_Var GetWindowObject(PP_Instance instance) OVERRIDE; virtual PP_Var GetOwnerElementObject(PP_Instance instance) OVERRIDE; virtual PP_Var ExecuteScript(PP_Instance instance, diff --git a/ppapi/proxy/ppp_instance_proxy.cc b/ppapi/proxy/ppp_instance_proxy.cc index bfc9102..077366e 100644 --- a/ppapi/proxy/ppp_instance_proxy.cc +++ b/ppapi/proxy/ppp_instance_proxy.cc @@ -11,7 +11,6 @@ #include "ppapi/c/ppb_core.h" #include "ppapi/c/ppb_fullscreen.h" #include "ppapi/c/ppp_instance.h" -#include "ppapi/c/private/ppb_flash_fullscreen.h" #include "ppapi/proxy/host_dispatcher.h" #include "ppapi/proxy/plugin_dispatcher.h" #include "ppapi/proxy/plugin_resource_tracker.h" @@ -21,23 +20,22 @@ #include "ppapi/shared_impl/ppb_view_shared.h" #include "ppapi/shared_impl/scoped_pp_resource.h" #include "ppapi/thunk/enter.h" +#include "ppapi/thunk/ppb_flash_fullscreen_api.h" #include "ppapi/thunk/ppb_view_api.h" namespace ppapi { namespace proxy { +using thunk::EnterInstanceAPINoLock; +using thunk::EnterInstanceNoLock; +using thunk::EnterResourceNoLock; +using thunk::PPB_Flash_Fullscreen_API; +using thunk::PPB_Instance_API; +using thunk::PPB_View_API; + namespace { #if !defined(OS_NACL) -PP_Bool IsFlashFullscreen(PP_Instance instance, - HostDispatcher* dispatcher) { - const PPB_FlashFullscreen* flash_fullscreen_interface = - static_cast<const PPB_FlashFullscreen*>( - dispatcher->local_get_interface()(PPB_FLASHFULLSCREEN_INTERFACE)); - DCHECK(flash_fullscreen_interface); - return flash_fullscreen_interface->IsFullscreen(instance); -} - PP_Bool DidCreate(PP_Instance instance, uint32_t argc, const char* argn[], @@ -64,15 +62,19 @@ void DidDestroy(PP_Instance instance) { void DidChangeView(PP_Instance instance, PP_Resource view_resource) { HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance); - thunk::EnterResourceNoLock<thunk::PPB_View_API> enter(view_resource, false); - if (enter.failed()) { + EnterResourceNoLock<PPB_View_API> enter_view(view_resource, false); + if (enter_view.failed()) { NOTREACHED(); return; } + PP_Bool flash_fullscreen = PP_FALSE; + EnterInstanceNoLock enter_instance(instance); + if (!enter_instance.failed()) + flash_fullscreen = enter_instance.functions()->FlashIsFullscreen(instance); dispatcher->Send(new PpapiMsg_PPPInstance_DidChangeView( - API_ID_PPP_INSTANCE, instance, enter.object()->GetData(), - IsFlashFullscreen(instance, dispatcher))); + API_ID_PPP_INSTANCE, instance, enter_view.object()->GetData(), + flash_fullscreen)); } void DidChangeFocus(PP_Instance instance, PP_Bool has_focus) { @@ -223,9 +225,13 @@ void PPP_Instance_Proxy::OnPluginMsgDidChangeView( InstanceData* data = dispatcher->GetInstanceData(instance); if (!data) return; - data->view = new_data; - data->flash_fullscreen = flash_fullscreen; + +#if !defined(OS_NACL) + EnterInstanceAPINoLock<PPB_Flash_Fullscreen_API> enter(instance); + if (!enter.failed()) + enter.functions()->SetLocalIsFullscreen(instance, flash_fullscreen); +#endif // !defined(OS_NACL) ScopedPPResource resource( ScopedPPResource::PassRef(), diff --git a/ppapi/shared_impl/resource.h b/ppapi/shared_impl/resource.h index d341b32..dc1bf3f 100644 --- a/ppapi/shared_impl/resource.h +++ b/ppapi/shared_impl/resource.h @@ -37,6 +37,7 @@ F(PPB_Flash_Clipboard_API) \ F(PPB_Flash_DeviceID_API) \ F(PPB_Flash_FontFile_API) \ + F(PPB_Flash_Fullscreen_API) \ F(PPB_Flash_Functions_API) \ F(PPB_Flash_Menu_API) \ F(PPB_Flash_MessageLoop_API) \ diff --git a/ppapi/shared_impl/singleton_resource_id.h b/ppapi/shared_impl/singleton_resource_id.h index 526ebdf..9558db6 100644 --- a/ppapi/shared_impl/singleton_resource_id.h +++ b/ppapi/shared_impl/singleton_resource_id.h @@ -10,8 +10,9 @@ namespace ppapi { // These IDs are used to access singleton resource objects using // PPB_Instance_API.GetSingletonResource. enum SingletonResourceID { - FLASH_SINGLETON_ID, FLASH_CLIPBOARD_SINGLETON_ID, + FLASH_FULLSCREEN_SINGLETON_ID, + FLASH_SINGLETON_ID, GAMEPAD_SINGLETON_ID, }; diff --git a/ppapi/thunk/enter.h b/ppapi/thunk/enter.h index b5e129f..358d0a2 100644 --- a/ppapi/thunk/enter.h +++ b/ppapi/thunk/enter.h @@ -248,7 +248,7 @@ class PPAPI_THUNK_EXPORT EnterInstanceNoLock // EnterInstanceAPI ------------------------------------------------------------ template<typename ApiT, bool lock_on_entry = true> -class PPAPI_THUNK_EXPORT EnterInstanceAPI +class EnterInstanceAPI : public subtle::EnterBase, public subtle::LockOnEntry<lock_on_entry> { public: @@ -278,8 +278,7 @@ class PPAPI_THUNK_EXPORT EnterInstanceAPI }; template<typename ApiT> -class PPAPI_THUNK_EXPORT EnterInstanceAPINoLock - : public EnterInstanceAPI<ApiT, false> { +class EnterInstanceAPINoLock : public EnterInstanceAPI<ApiT, false> { public: explicit EnterInstanceAPINoLock(PP_Instance instance) : EnterInstanceAPI<ApiT, false>(instance) { diff --git a/ppapi/thunk/ppb_flash_api.h b/ppapi/thunk/ppb_flash_api.h index aa70d3a..fd7123a 100644 --- a/ppapi/thunk/ppb_flash_api.h +++ b/ppapi/thunk/ppb_flash_api.h @@ -95,12 +95,6 @@ class PPAPI_THUNK_EXPORT PPB_Flash_API { virtual int32_t QueryFileRef(PP_Instance instance, PP_Resource file_ref, PP_FileInfo* info) = 0; - - // FlashFullscreen. - virtual PP_Bool FlashIsFullscreen(PP_Instance instance) = 0; - virtual PP_Bool FlashSetFullscreen(PP_Instance instance, - PP_Bool fullscreen) = 0; - virtual PP_Bool FlashGetScreenSize(PP_Instance instance, PP_Size* size) = 0; }; } // namespace thunk diff --git a/ppapi/thunk/ppb_flash_fullscreen_api.h b/ppapi/thunk/ppb_flash_fullscreen_api.h new file mode 100644 index 0000000..d1435b5 --- /dev/null +++ b/ppapi/thunk/ppb_flash_fullscreen_api.h @@ -0,0 +1,35 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef PPAPI_THUNK_PPB_FLASH_FULLSCREEN_API_H_ +#define PPAPI_THUNK_PPB_FLASH_FULLSCREEN_API_H_ + +#include "ppapi/shared_impl/singleton_resource_id.h" +#include "ppapi/thunk/ppapi_thunk_export.h" + +namespace ppapi { +namespace thunk { + +class PPAPI_THUNK_EXPORT PPB_Flash_Fullscreen_API { + public: + virtual ~PPB_Flash_Fullscreen_API() {} + + virtual PP_Bool IsFullscreen(PP_Instance instance) = 0; + virtual PP_Bool SetFullscreen(PP_Instance instance, + PP_Bool fullscreen) = 0; + + // Internal function used to update whether or not Flash fullscreen is enabled + // in the plugin side. The value is passed with a + // PpapiMsg_PPPInstance_DidChangeView message. + virtual void SetLocalIsFullscreen(PP_Instance instance, + PP_Bool fullscreen) = 0; + + static const SingletonResourceID kSingletonResourceID = + FLASH_FULLSCREEN_SINGLETON_ID; +}; + +} // namespace thunk +} // namespace ppapi + +#endif // PPAPI_THUNK_PPB_FLASH_FULLSCREEN_API_H_ diff --git a/ppapi/thunk/ppb_flash_fullscreen_thunk.cc b/ppapi/thunk/ppb_flash_fullscreen_thunk.cc index 598dc71..f64ad99 100644 --- a/ppapi/thunk/ppb_flash_fullscreen_thunk.cc +++ b/ppapi/thunk/ppb_flash_fullscreen_thunk.cc @@ -6,8 +6,8 @@ #include "ppapi/c/private/ppb_flash_fullscreen.h" #include "ppapi/thunk/thunk.h" #include "ppapi/thunk/enter.h" +#include "ppapi/thunk/ppb_flash_fullscreen_api.h" #include "ppapi/thunk/ppb_instance_api.h" -#include "ppapi/thunk/ppb_flash_api.h" #include "ppapi/thunk/resource_creation_api.h" namespace ppapi { @@ -16,25 +16,26 @@ namespace thunk { namespace { PP_Bool IsFullscreen(PP_Instance instance) { - EnterInstance enter(instance); + EnterInstanceAPI<PPB_Flash_Fullscreen_API> enter(instance); if (enter.failed()) return PP_FALSE; - return enter.functions()->GetFlashAPI()->FlashIsFullscreen(instance); + return enter.functions()->IsFullscreen(instance); } PP_Bool SetFullscreen(PP_Instance instance, PP_Bool fullscreen) { - EnterInstance enter(instance); + EnterInstanceAPI<PPB_Flash_Fullscreen_API> enter(instance); if (enter.failed()) return PP_FALSE; - return enter.functions()->GetFlashAPI()->FlashSetFullscreen(instance, - fullscreen); + return enter.functions()->SetFullscreen(instance, fullscreen); } +// TODO(raymes): The codepaths for GetScreenSize in PPB_Fullscreen and +// PPB_Flash_Fullscreen are the same. Consider deprecating the flash version. PP_Bool GetScreenSize(PP_Instance instance, PP_Size* size) { EnterInstance enter(instance); if (enter.failed()) return PP_FALSE; - return enter.functions()->GetFlashAPI()->FlashGetScreenSize(instance, size); + return enter.functions()->GetScreenSize(instance, size); } const PPB_FlashFullscreen_0_1 g_ppb_flash_fullscreen_thunk = { diff --git a/ppapi/thunk/ppb_instance_api.h b/ppapi/thunk/ppb_instance_api.h index a89785c..cb52418 100644 --- a/ppapi/thunk/ppb_instance_api.h +++ b/ppapi/thunk/ppb_instance_api.h @@ -49,8 +49,11 @@ class PPB_Instance_API { virtual PP_Bool BindGraphics(PP_Instance instance, PP_Resource device) = 0; virtual PP_Bool IsFullFrame(PP_Instance instance) = 0; - // Not an exposed PPAPI function, this returns the internal view data struct. + // Unexposed PPAPI functions for proxying. + // Returns the internal view data struct. virtual const ViewData* GetViewData(PP_Instance instance) = 0; + // Returns the flash fullscreen status. + virtual PP_Bool FlashIsFullscreen(PP_Instance instance) = 0; // InstancePrivate. virtual PP_Var GetWindowObject(PP_Instance instance) = 0; |