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

Unified Diff: ppapi/proxy/ppb_talk_private_proxy.cc

Issue 9683003: Aura: Show dialog box asking user's permisssion for screen sharing for gtalk (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: patch Created 8 years, 9 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: ppapi/proxy/ppb_talk_private_proxy.cc
diff --git a/ppapi/proxy/ppb_talk_private_proxy.cc b/ppapi/proxy/ppb_talk_private_proxy.cc
index 52c2f3a6eda45521dd113aa5f7b0bb5f718b8d89..ee2e73011e0e63ea8a8d2e3fc8918af9a4f18c4f 100644
--- a/ppapi/proxy/ppb_talk_private_proxy.cc
+++ b/ppapi/proxy/ppb_talk_private_proxy.cc
@@ -22,7 +22,9 @@ namespace {
class Talk : public Resource, public thunk::PPB_Talk_Private_API {
public:
- Talk(PP_Instance instance) : Resource(OBJECT_IS_PROXY, instance) {
+ Talk(PP_Instance instance, int renderer_id)
+ : Resource(OBJECT_IS_PROXY, instance),
+ renderer_id_(renderer_id) {
}
// Resource overrides.
@@ -39,12 +41,20 @@ class Talk : public Resource, public thunk::PPB_Talk_Private_API {
callback_ = new TrackedCallback(this, callback);
- PluginGlobals::Get()->plugin_proxy_delegate()->SendToBrowser(
+ if (PluginGlobals::Get()->plugin_proxy_delegate()->SendToBrowser(
new PpapiHostMsg_PPBTalk_GetPermission(
API_ID_PPB_TALK,
dispatcher->plugin_dispatcher_id(),
- pp_resource()));
- return PP_OK_COMPLETIONPENDING;
+ pp_resource(),
+ renderer_id_)))
+ return PP_OK_COMPLETIONPENDING;
+ return PP_ERROR_FAILED;
+ }
+
+ int GetRendererId() {
+ // Plugin side does not implement this method.
+ NOTREACHED();
+ return 0;
}
void GotCompletion(int32_t result) {
@@ -53,6 +63,7 @@ class Talk : public Resource, public thunk::PPB_Talk_Private_API {
private:
scoped_refptr<TrackedCallback> callback_;
+ int renderer_id_;
DISALLOW_COPY_AND_ASSIGN(Talk);
};
@@ -65,7 +76,14 @@ PPB_Talk_Private_Proxy::PPB_Talk_Private_Proxy(Dispatcher* dispatcher)
// static
PP_Resource PPB_Talk_Private_Proxy::CreateProxyResource(PP_Instance instance) {
- return (new Talk(instance))->GetReference();
+ PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance);
+ if (!dispatcher)
+ return 0;
+
+ int renderer_id;
+ dispatcher->Send(new PpapiHostMsg_PPBTalk_GetRendererId(API_ID_PPB_TALK,
+ instance, &renderer_id));
+ return (new Talk(instance, renderer_id))->GetReference();
}
bool PPB_Talk_Private_Proxy::OnMessageReceived(const IPC::Message& msg) {
@@ -73,6 +91,7 @@ bool PPB_Talk_Private_Proxy::OnMessageReceived(const IPC::Message& msg) {
IPC_BEGIN_MESSAGE_MAP(PPB_Talk_Private_Proxy, msg)
IPC_MESSAGE_HANDLER(PpapiMsg_PPBTalk_GetPermissionACK,
OnMsgGetPermissionACK)
+ IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBTalk_GetRendererId, OnMsgGetRendererId)
IPC_MESSAGE_UNHANDLED(handled = false);
IPC_END_MESSAGE_MAP();
return handled;
@@ -87,5 +106,17 @@ void PPB_Talk_Private_Proxy::OnMsgGetPermissionACK(uint32 /* dispatcher_id */,
static_cast<Talk*>(enter.object())->GotCompletion(result);
}
+void PPB_Talk_Private_Proxy::OnMsgGetRendererId(PP_Instance instance,
+ int* renderer_id) {
+ thunk::EnterResourceCreation enter(instance);
+ if (enter.succeeded()) {
+ PP_Resource resource = enter.functions()->CreateTalk(instance);
+ thunk::EnterResourceNoLock<thunk::PPB_Talk_Private_API> enter1(
+ resource, false);
+ if (enter1.succeeded())
+ *renderer_id = enter1.object()->GetRendererId();
+ }
+}
+
} // namespace proxy
} // namespace ppapi

Powered by Google App Engine
This is Rietveld 408576698