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

Side by Side Diff: webkit/plugins/ppapi/ppb_broker_impl.cc

Issue 20165002: Move webkit/plugins/ppapi to content/renderer/pepper. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: more more clang fun Created 7 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/plugins/ppapi/ppb_broker_impl.h ('k') | webkit/plugins/ppapi/ppb_buffer_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "webkit/plugins/ppapi/ppb_broker_impl.h"
6
7 #include "base/logging.h"
8 #include "ppapi/shared_impl/platform_file.h"
9 #include "third_party/WebKit/public/web/WebDocument.h"
10 #include "third_party/WebKit/public/web/WebElement.h"
11 #include "third_party/WebKit/public/web/WebPluginContainer.h"
12 #include "webkit/plugins/ppapi/common.h"
13 #include "webkit/plugins/ppapi/plugin_module.h"
14 #include "webkit/plugins/ppapi/ppapi_plugin_instance_impl.h"
15 #include "webkit/plugins/ppapi/resource_helper.h"
16
17 using ppapi::PlatformFileToInt;
18 using ppapi::thunk::PPB_Broker_API;
19 using ppapi::TrackedCallback;
20
21 namespace webkit {
22 namespace ppapi {
23
24 // PPB_Broker_Impl ------------------------------------------------------
25
26 PPB_Broker_Impl::PPB_Broker_Impl(PP_Instance instance)
27 : Resource(::ppapi::OBJECT_IS_IMPL, instance),
28 broker_(NULL),
29 connect_callback_(),
30 pipe_handle_(PlatformFileToInt(base::kInvalidPlatformFileValue)) {
31 }
32
33 PPB_Broker_Impl::~PPB_Broker_Impl() {
34 if (broker_) {
35 broker_->Disconnect(this);
36 broker_ = NULL;
37 }
38
39 // The plugin owns the handle.
40 pipe_handle_ = PlatformFileToInt(base::kInvalidPlatformFileValue);
41 }
42
43 PPB_Broker_API* PPB_Broker_Impl::AsPPB_Broker_API() {
44 return this;
45 }
46
47 int32_t PPB_Broker_Impl::Connect(
48 scoped_refptr<TrackedCallback> connect_callback) {
49 // TODO(ddorwin): Return PP_ERROR_FAILED if plugin is in-process.
50
51 if (broker_) {
52 // May only be called once.
53 return PP_ERROR_FAILED;
54 }
55
56 PluginInstanceImpl* plugin_instance = ResourceHelper::GetPluginInstance(this);
57 if (!plugin_instance)
58 return PP_ERROR_FAILED;
59
60 // The callback must be populated now in case we are connected to the broker
61 // and BrokerConnected is called before ConnectToBroker returns.
62 // Because it must be created now, it must be aborted and cleared if
63 // ConnectToBroker fails.
64 connect_callback_ = connect_callback;
65
66 broker_ = plugin_instance->delegate()->ConnectToBroker(this);
67 if (!broker_) {
68 connect_callback_->Abort();
69 return PP_ERROR_FAILED;
70 }
71
72 return PP_OK_COMPLETIONPENDING;
73 }
74
75 int32_t PPB_Broker_Impl::GetHandle(int32_t* handle) {
76 if (pipe_handle_ == PlatformFileToInt(base::kInvalidPlatformFileValue))
77 return PP_ERROR_FAILED; // Handle not set yet.
78 *handle = pipe_handle_;
79 return PP_OK;
80 }
81
82 GURL PPB_Broker_Impl::GetDocumentUrl() {
83 PluginInstanceImpl* plugin_instance = ResourceHelper::GetPluginInstance(this);
84 return plugin_instance->container()->element().document().url();
85 }
86
87 // Transfers ownership of the handle to the plugin.
88 void PPB_Broker_Impl::BrokerConnected(int32_t handle, int32_t result) {
89 DCHECK(pipe_handle_ ==
90 PlatformFileToInt(base::kInvalidPlatformFileValue));
91 DCHECK(result == PP_OK ||
92 handle == PlatformFileToInt(base::kInvalidPlatformFileValue));
93
94 pipe_handle_ = handle;
95
96 // Synchronous calls are not supported.
97 DCHECK(TrackedCallback::IsPending(connect_callback_));
98
99 connect_callback_->Run(result);
100 }
101
102 } // namespace ppapi
103 } // namespace webkit
OLDNEW
« no previous file with comments | « webkit/plugins/ppapi/ppb_broker_impl.h ('k') | webkit/plugins/ppapi/ppb_buffer_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698