Commit 12b6f612 authored by teravest@chromium.org's avatar teravest@chromium.org

IDL: Autogenerate thunk .cc file for PPB_View


BUG=


Review URL: https://chromiumcodereview.appspot.com/12220082

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@182253 0039d316-1c4b-4281-b951-d872f2087c98
parent 634f69c8
...@@ -4,6 +4,9 @@ ...@@ -4,6 +4,9 @@
*/ */
/* This file contains the <code>PPB_View_Dev</code> interface. */ /* This file contains the <code>PPB_View_Dev</code> interface. */
[generate_thunk]
label Chrome { label Chrome {
M22 = 0.1 M22 = 0.1
}; };
......
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
* of the view of an instance. * of the view of an instance.
*/ */
[generate_thunk]
label Chrome { label Chrome {
M18 = 1.0 M18 = 1.0
}; };
......
...@@ -143,6 +143,7 @@ def _GetDefaultFailureValue(t): ...@@ -143,6 +143,7 @@ def _GetDefaultFailureValue(t):
'PP_Bool': 'PP_FALSE', 'PP_Bool': 'PP_FALSE',
'PP_Resource': '0', 'PP_Resource': '0',
'struct PP_Var': 'PP_MakeUndefined()', 'struct PP_Var': 'PP_MakeUndefined()',
'float': '0.0f',
'int32_t': 'enter.retval()', 'int32_t': 'enter.retval()',
'uint16_t': '0', 'uint16_t': '0',
'uint32_t': '0', 'uint32_t': '0',
......
...@@ -231,6 +231,7 @@ ...@@ -231,6 +231,7 @@
'thunk/ppb_video_decoder_api.h', 'thunk/ppb_video_decoder_api.h',
'thunk/ppb_video_decoder_thunk.cc', 'thunk/ppb_video_decoder_thunk.cc',
'thunk/ppb_view_api.h', 'thunk/ppb_view_api.h',
'thunk/ppb_view_dev_thunk.cc',
'thunk/ppb_view_thunk.cc', 'thunk/ppb_view_thunk.cc',
'thunk/ppb_websocket_api.h', 'thunk/ppb_websocket_api.h',
'thunk/ppb_websocket_thunk.cc', 'thunk/ppb_websocket_thunk.cc',
......
...@@ -4,6 +4,14 @@ ...@@ -4,6 +4,14 @@
#include "ppapi/shared_impl/ppb_view_shared.h" #include "ppapi/shared_impl/ppb_view_shared.h"
namespace {
bool IsRectNonempty(const PP_Rect& rect) {
return rect.size.width > 0 && rect.size.height > 0;
}
} // namespace
namespace ppapi { namespace ppapi {
ViewData::ViewData() { ViewData::ViewData() {
...@@ -50,4 +58,38 @@ const ViewData& PPB_View_Shared::GetData() const { ...@@ -50,4 +58,38 @@ const ViewData& PPB_View_Shared::GetData() const {
return data_; return data_;
} }
PP_Bool PPB_View_Shared::GetRect(PP_Rect* viewport) const {
if (!viewport)
return PP_FALSE;
*viewport = data_.rect;
return PP_TRUE;
}
PP_Bool PPB_View_Shared::IsFullscreen() const {
return PP_FromBool(data_.is_fullscreen);
}
PP_Bool PPB_View_Shared::IsVisible() const {
return PP_FromBool(data_.is_page_visible && IsRectNonempty(data_.clip_rect));
}
PP_Bool PPB_View_Shared::IsPageVisible() const {
return PP_FromBool(data_.is_page_visible);
}
PP_Bool PPB_View_Shared::GetClipRect(PP_Rect* clip) const {
if (!clip)
return PP_FALSE;
*clip = data_.clip_rect;
return PP_TRUE;
}
float PPB_View_Shared::GetDeviceScale() const {
return data_.device_scale;
}
float PPB_View_Shared::GetCSSScale() const {
return data_.css_scale;
}
} // namespace ppapi } // namespace ppapi
...@@ -43,6 +43,14 @@ class PPAPI_SHARED_EXPORT PPB_View_Shared ...@@ -43,6 +43,14 @@ class PPAPI_SHARED_EXPORT PPB_View_Shared
// PPB_View_API implementation. // PPB_View_API implementation.
virtual const ViewData& GetData() const OVERRIDE; virtual const ViewData& GetData() const OVERRIDE;
virtual PP_Bool GetRect(PP_Rect* viewport) const OVERRIDE;
virtual PP_Bool IsFullscreen() const OVERRIDE;
virtual PP_Bool IsVisible() const OVERRIDE;
virtual PP_Bool IsPageVisible() const OVERRIDE;
virtual PP_Bool GetClipRect(PP_Rect* clip) const
OVERRIDE;
virtual float GetDeviceScale() const OVERRIDE;
virtual float GetCSSScale() const OVERRIDE;
private: private:
ViewData data_; ViewData data_;
......
...@@ -17,12 +17,16 @@ class PPAPI_THUNK_EXPORT PPB_View_API { ...@@ -17,12 +17,16 @@ class PPAPI_THUNK_EXPORT PPB_View_API {
public: public:
virtual ~PPB_View_API() {} virtual ~PPB_View_API() {}
// Returns the view data struct. We could have virtual functions here for // Returns the view data struct.
// each PPAPI function, but that would be more boilerplate for these simple
// getters so the logic is implemented in the thunk layer. If we start
// autogenerating the thunk layer and need this to be more regular, adding
// the API functions here should be fine.
virtual const ViewData& GetData() const = 0; virtual const ViewData& GetData() const = 0;
virtual PP_Bool GetRect(PP_Rect* viewport) const = 0;
virtual PP_Bool IsFullscreen() const = 0;
virtual PP_Bool IsVisible() const = 0;
virtual PP_Bool IsPageVisible() const = 0;
virtual PP_Bool GetClipRect(PP_Rect* clip) const = 0;
virtual float GetDeviceScale() const = 0;
virtual float GetCSSScale() const = 0;
}; };
} // namespace thunk } // namespace thunk
......
// 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.
// From dev/ppb_view_dev.idl modified Fri Feb 8 14:28:54 2013.
#include "ppapi/c/dev/ppb_view_dev.h"
#include "ppapi/c/pp_errors.h"
#include "ppapi/shared_impl/tracked_callback.h"
#include "ppapi/thunk/enter.h"
#include "ppapi/thunk/ppb_instance_api.h"
#include "ppapi/thunk/ppb_view_api.h"
#include "ppapi/thunk/resource_creation_api.h"
#include "ppapi/thunk/thunk.h"
namespace ppapi {
namespace thunk {
namespace {
float GetDeviceScale(PP_Resource resource) {
EnterResource<PPB_View_API> enter(resource, true);
if (enter.failed())
return 0.0f;
return enter.object()->GetDeviceScale();
}
float GetCSSScale(PP_Resource resource) {
EnterResource<PPB_View_API> enter(resource, true);
if (enter.failed())
return 0.0f;
return enter.object()->GetCSSScale();
}
const PPB_View_Dev_0_1 g_ppb_view_dev_thunk_0_1 = {
&GetDeviceScale,
&GetCSSScale
};
} // namespace
const PPB_View_Dev_0_1* GetPPB_View_Dev_0_1_Thunk() {
return &g_ppb_view_dev_thunk_0_1;
}
} // namespace thunk
} // namespace ppapi
...@@ -2,11 +2,15 @@ ...@@ -2,11 +2,15 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "ppapi/c/dev/ppb_view_dev.h" // From ppb_view.idl modified Fri Feb 8 14:28:54 2013.
#include "ppapi/c/pp_errors.h"
#include "ppapi/c/ppb_view.h" #include "ppapi/c/ppb_view.h"
#include "ppapi/shared_impl/ppb_view_shared.h" #include "ppapi/shared_impl/tracked_callback.h"
#include "ppapi/thunk/enter.h" #include "ppapi/thunk/enter.h"
#include "ppapi/thunk/ppb_instance_api.h"
#include "ppapi/thunk/ppb_view_api.h" #include "ppapi/thunk/ppb_view_api.h"
#include "ppapi/thunk/resource_creation_api.h"
#include "ppapi/thunk/thunk.h" #include "ppapi/thunk/thunk.h"
namespace ppapi { namespace ppapi {
...@@ -14,91 +18,59 @@ namespace thunk { ...@@ -14,91 +18,59 @@ namespace thunk {
namespace { namespace {
typedef EnterResource<PPB_View_API> EnterView;
bool IsRectVisible(const PP_Rect& rect) {
return rect.size.width > 0 && rect.size.height > 0;
}
PP_Bool IsView(PP_Resource resource) { PP_Bool IsView(PP_Resource resource) {
EnterView enter(resource, false); EnterResource<PPB_View_API> enter(resource, false);
return enter.succeeded() ? PP_TRUE : PP_FALSE; return PP_FromBool(enter.succeeded());
} }
PP_Bool GetRect(PP_Resource resource, PP_Rect* viewport) { PP_Bool GetRect(PP_Resource resource, struct PP_Rect* rect) {
EnterView enter(resource, true); EnterResource<PPB_View_API> enter(resource, true);
if (enter.failed() || !viewport) if (enter.failed())
return PP_FALSE; return PP_FALSE;
*viewport = enter.object()->GetData().rect; return enter.object()->GetRect(rect);
return PP_TRUE;
} }
PP_Bool IsFullscreen(PP_Resource resource) { PP_Bool IsFullscreen(PP_Resource resource) {
EnterView enter(resource, true); EnterResource<PPB_View_API> enter(resource, true);
if (enter.failed()) if (enter.failed())
return PP_FALSE; return PP_FALSE;
return PP_FromBool(enter.object()->GetData().is_fullscreen); return enter.object()->IsFullscreen();
} }
PP_Bool IsUserVisible(PP_Resource resource) { PP_Bool IsVisible(PP_Resource resource) {
EnterView enter(resource, true); EnterResource<PPB_View_API> enter(resource, true);
if (enter.failed()) if (enter.failed())
return PP_FALSE; return PP_FALSE;
return PP_FromBool(enter.object()->GetData().is_page_visible && return enter.object()->IsVisible();
IsRectVisible(enter.object()->GetData().clip_rect));
} }
PP_Bool IsPageVisible(PP_Resource resource) { PP_Bool IsPageVisible(PP_Resource resource) {
EnterView enter(resource, true); EnterResource<PPB_View_API> enter(resource, true);
if (enter.failed()) if (enter.failed())
return PP_FALSE; return PP_FALSE;
return PP_FromBool(enter.object()->GetData().is_page_visible); return enter.object()->IsPageVisible();
}
PP_Bool GetClipRect(PP_Resource resource, PP_Rect* clip) {
EnterView enter(resource, true);
if (enter.failed() || !clip)
return PP_FALSE;
*clip = enter.object()->GetData().clip_rect;
return PP_TRUE;
} }
float GetDeviceScale(PP_Resource resource) { PP_Bool GetClipRect(PP_Resource resource, struct PP_Rect* clip) {
EnterView enter(resource, true); EnterResource<PPB_View_API> enter(resource, true);
if (enter.failed()) if (enter.failed())
return 0.0f; return PP_FALSE;
return enter.object()->GetData().device_scale; return enter.object()->GetClipRect(clip);
}
float GetCSSScale(PP_Resource resource) {
EnterView enter(resource, true);
if (enter.failed())
return 0.0f;
return enter.object()->GetData().css_scale;
} }
const PPB_View g_ppb_view_thunk = { const PPB_View_1_0 g_ppb_view_thunk_1_0 = {
&IsView, &IsView,
&GetRect, &GetRect,
&IsFullscreen, &IsFullscreen,
&IsUserVisible, &IsVisible,
&IsPageVisible, &IsPageVisible,
&GetClipRect &GetClipRect
}; };
const PPB_View_Dev g_ppb_view_dev_thunk = {
&GetDeviceScale,
&GetCSSScale
};
} // namespace } // namespace
const PPB_View* GetPPB_View_1_0_Thunk() { const PPB_View_1_0* GetPPB_View_1_0_Thunk() {
return &g_ppb_view_thunk; return &g_ppb_view_thunk_1_0;
}
const PPB_View_Dev* GetPPB_View_Dev_0_1_Thunk() {
return &g_ppb_view_dev_thunk;
} }
} // namespace thunk } // namespace thunk
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment