OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 // | 4 // |
5 // A proxy for NPObject that sends all calls to the object to an NPObjectStub | 5 // A proxy for NPObject that sends all calls to the object to an NPObjectStub |
6 // running in a different process. | 6 // running in a different process. |
7 | 7 |
8 #ifndef CONTENT_COMMON_NPOBJECT_PROXY_H_ | 8 #ifndef CONTENT_COMMON_NPOBJECT_PROXY_H_ |
9 #define CONTENT_COMMON_NPOBJECT_PROXY_H_ | 9 #define CONTENT_COMMON_NPOBJECT_PROXY_H_ |
10 | 10 |
11 #include "base/memory/ref_counted.h" | 11 #include "base/memory/ref_counted.h" |
12 #include "content/common/npobject_base.h" | 12 #include "content/common/npobject_base.h" |
13 #include "googleurl/src/gurl.h" | 13 #include "googleurl/src/gurl.h" |
14 #include "ipc/ipc_listener.h" | 14 #include "ipc/ipc_listener.h" |
15 #include "ipc/ipc_sender.h" | 15 #include "ipc/ipc_sender.h" |
16 #include "third_party/npapi/bindings/npruntime.h" | 16 #include "third_party/npapi/bindings/npruntime.h" |
17 #include "ui/gfx/native_widget_types.h" | 17 #include "ui/gfx/native_widget_types.h" |
18 | 18 |
| 19 struct NPObject; |
| 20 |
| 21 namespace content { |
19 class NPChannelBase; | 22 class NPChannelBase; |
20 struct NPObject; | |
21 | 23 |
22 // When running a plugin in a different process from the renderer, we need to | 24 // When running a plugin in a different process from the renderer, we need to |
23 // proxy calls to NPObjects across process boundaries. This happens both ways, | 25 // proxy calls to NPObjects across process boundaries. This happens both ways, |
24 // as a plugin can get an NPObject for the window, and a page can get an | 26 // as a plugin can get an NPObject for the window, and a page can get an |
25 // NPObject for the plugin. In the process that interacts with the NPobject we | 27 // NPObject for the plugin. In the process that interacts with the NPobject we |
26 // give it an NPObjectProxy instead. All calls to it are sent across an IPC | 28 // give it an NPObjectProxy instead. All calls to it are sent across an IPC |
27 // channel (specifically, a NPChannelBase). The NPObjectStub on the other | 29 // channel (specifically, a NPChannelBase). The NPObjectStub on the other |
28 // side translates the IPC messages into calls to the actual NPObject, and | 30 // side translates the IPC messages into calls to the actual NPObject, and |
29 // returns the marshalled result. | 31 // returns the marshalled result. |
30 class NPObjectProxy : public IPC::Listener, | 32 class NPObjectProxy : public IPC::Listener, |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 static NPClass npclass_proxy_; | 115 static NPClass npclass_proxy_; |
114 | 116 |
115 scoped_refptr<NPChannelBase> channel_; | 117 scoped_refptr<NPChannelBase> channel_; |
116 int route_id_; | 118 int route_id_; |
117 gfx::NativeViewId containing_window_; | 119 gfx::NativeViewId containing_window_; |
118 | 120 |
119 // The url of the main frame hosting the plugin. | 121 // The url of the main frame hosting the plugin. |
120 GURL page_url_; | 122 GURL page_url_; |
121 }; | 123 }; |
122 | 124 |
| 125 } // namespace content |
| 126 |
123 #endif // CONTENT_COMMON_NPOBJECT_PROXY_H_ | 127 #endif // CONTENT_COMMON_NPOBJECT_PROXY_H_ |
OLD | NEW |