OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
Charlie Reis
2012/10/15 23:10:09
nit: Remove spaces.
Fady Samuel
2012/10/16 19:17:08
Done.
| |
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 #include "content/renderer/browser_plugin/browser_plugin_bindings.h" | 5 #include "content/renderer/browser_plugin/browser_plugin_bindings.h" |
6 | 6 |
7 #include <cstdlib> | 7 #include <cstdlib> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
11 #include "base/message_loop.h" | 11 #include "base/message_loop.h" |
(...skipping 22 matching lines...) Expand all Loading... | |
34 using WebKit::WebString; | 34 using WebKit::WebString; |
35 | 35 |
36 namespace content { | 36 namespace content { |
37 | 37 |
38 namespace { | 38 namespace { |
39 | 39 |
40 const char kAddEventListener[] = "addEventListener"; | 40 const char kAddEventListener[] = "addEventListener"; |
41 const char kBackMethod[] = "back"; | 41 const char kBackMethod[] = "back"; |
42 const char kCanGoBack[] = "canGoBack"; | 42 const char kCanGoBack[] = "canGoBack"; |
43 const char kCanGoForward[] = "canGoForward"; | 43 const char kCanGoForward[] = "canGoForward"; |
44 const char kContentWindow[] = "contentWindow"; | |
44 const char kForwardMethod[] = "forward"; | 45 const char kForwardMethod[] = "forward"; |
45 const char kGetProcessId[] = "getProcessId"; | 46 const char kGetProcessId[] = "getProcessId"; |
46 const char kGoMethod[] = "go"; | 47 const char kGoMethod[] = "go"; |
47 const char kPartitionAttribute[] = "partition"; | 48 const char kPartitionAttribute[] = "partition"; |
48 const char kReloadMethod[] = "reload"; | 49 const char kReloadMethod[] = "reload"; |
49 const char kRemoveEventListener[] = "removeEventListener"; | 50 const char kRemoveEventListener[] = "removeEventListener"; |
50 const char kSrcAttribute[] = "src"; | 51 const char kSrcAttribute[] = "src"; |
51 const char kStopMethod[] = "stop"; | 52 const char kStopMethod[] = "stop"; |
52 const char kTerminateMethod[] = "terminate"; | 53 const char kTerminateMethod[] = "terminate"; |
53 | 54 |
54 BrowserPluginBindings* GetBindings(NPObject* object) { | 55 BrowserPluginBindings* GetBindings(NPObject* object) { |
55 return static_cast<BrowserPluginBindings::BrowserPluginNPObject*>(object)-> | 56 return static_cast<BrowserPluginBindings::BrowserPluginNPObject*>(object)-> |
56 message_channel; | 57 message_channel; |
57 } | 58 } |
58 | 59 |
59 bool IdentifierIsAddEventListener(NPIdentifier identifier) { | 60 bool IdentifierIsAddEventListener(NPIdentifier identifier) { |
60 return WebBindings::getStringIdentifier(kAddEventListener) == identifier; | 61 return WebBindings::getStringIdentifier(kAddEventListener) == identifier; |
61 } | 62 } |
62 | 63 |
64 bool IdentifierIsContentWindow(NPIdentifier identifier) { | |
65 return WebBindings::getStringIdentifier(kContentWindow) == identifier; | |
66 } | |
67 | |
63 bool IdentifierIsBackMethod(NPIdentifier identifier) { | 68 bool IdentifierIsBackMethod(NPIdentifier identifier) { |
64 return WebBindings::getStringIdentifier(kBackMethod) == identifier; | 69 return WebBindings::getStringIdentifier(kBackMethod) == identifier; |
65 } | 70 } |
66 | 71 |
67 bool IdentifierIsCanGoBack(NPIdentifier identifier) { | 72 bool IdentifierIsCanGoBack(NPIdentifier identifier) { |
68 return WebBindings::getStringIdentifier(kCanGoBack) == identifier; | 73 return WebBindings::getStringIdentifier(kCanGoBack) == identifier; |
69 } | 74 } |
70 | 75 |
71 bool IdentifierIsCanGoForward(NPIdentifier identifier) { | 76 bool IdentifierIsCanGoForward(NPIdentifier identifier) { |
72 return WebBindings::getStringIdentifier(kCanGoForward) == identifier; | 77 return WebBindings::getStringIdentifier(kCanGoForward) == identifier; |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
290 bool BrowserPluginBindingsInvokeDefault(NPObject* np_obj, | 295 bool BrowserPluginBindingsInvokeDefault(NPObject* np_obj, |
291 const NPVariant* args, | 296 const NPVariant* args, |
292 uint32 arg_count, | 297 uint32 arg_count, |
293 NPVariant* result) { | 298 NPVariant* result) { |
294 NOTIMPLEMENTED(); | 299 NOTIMPLEMENTED(); |
295 return false; | 300 return false; |
296 } | 301 } |
297 | 302 |
298 bool BrowserPluginBindingsHasProperty(NPObject* np_obj, NPIdentifier name) { | 303 bool BrowserPluginBindingsHasProperty(NPObject* np_obj, NPIdentifier name) { |
299 return IdentifierIsSrcAttribute(name) || | 304 return IdentifierIsSrcAttribute(name) || |
305 IdentifierIsContentWindow(name) || | |
300 IdentifierIsPartitionAttribute(name); | 306 IdentifierIsPartitionAttribute(name); |
301 } | 307 } |
302 | 308 |
303 bool BrowserPluginBindingsGetProperty(NPObject* np_obj, NPIdentifier name, | 309 bool BrowserPluginBindingsGetProperty(NPObject* np_obj, NPIdentifier name, |
304 NPVariant* result) { | 310 NPVariant* result) { |
305 if (!np_obj) | 311 if (!np_obj) |
306 return false; | 312 return false; |
307 | 313 |
308 if (!result) | 314 if (!result) |
309 return false; | 315 return false; |
310 | 316 |
311 // All attributes from here on rely on the bindings, so retrieve it once and | 317 // All attributes from here on rely on the bindings, so retrieve it once and |
312 // return on failure. | 318 // return on failure. |
313 BrowserPluginBindings* bindings = GetBindings(np_obj); | 319 BrowserPluginBindings* bindings = GetBindings(np_obj); |
314 if (!bindings) | 320 if (!bindings) |
315 return false; | 321 return false; |
316 | 322 |
317 if (IdentifierIsSrcAttribute(name)) { | 323 if (IdentifierIsSrcAttribute(name)) { |
318 std::string src = bindings->instance()->GetSrcAttribute(); | 324 std::string src = bindings->instance()->GetSrcAttribute(); |
319 return StringToNPVariant(src, result); | 325 return StringToNPVariant(src, result); |
320 } | 326 } |
321 | 327 |
328 if (IdentifierIsContentWindow(name)) { | |
329 NPObject* obj = bindings->instance()->GetContentWindow(); | |
330 if (obj) { | |
331 result->type = NPVariantType_Object; | |
332 result->value.objectValue = WebBindings::retainObject(obj); | |
333 } | |
334 return true; | |
335 } | |
336 | |
322 if (IdentifierIsPartitionAttribute(name)) { | 337 if (IdentifierIsPartitionAttribute(name)) { |
323 std::string partition_id = bindings->instance()->GetPartitionAttribute(); | 338 std::string partition_id = bindings->instance()->GetPartitionAttribute(); |
324 return StringToNPVariant(partition_id, result); | 339 return StringToNPVariant(partition_id, result); |
325 } | 340 } |
326 | 341 |
327 return false; | 342 return false; |
328 } | 343 } |
329 | 344 |
330 bool BrowserPluginBindingsSetProperty(NPObject* np_obj, NPIdentifier name, | 345 bool BrowserPluginBindingsSetProperty(NPObject* np_obj, NPIdentifier name, |
331 const NPVariant* variant) { | 346 const NPVariant* variant) { |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
400 WebBindings::createObject(NULL, &browser_plugin_message_class); | 415 WebBindings::createObject(NULL, &browser_plugin_message_class); |
401 np_object_ = static_cast<BrowserPluginBindings::BrowserPluginNPObject*>(obj); | 416 np_object_ = static_cast<BrowserPluginBindings::BrowserPluginNPObject*>(obj); |
402 np_object_->message_channel = weak_ptr_factory_.GetWeakPtr(); | 417 np_object_->message_channel = weak_ptr_factory_.GetWeakPtr(); |
403 } | 418 } |
404 | 419 |
405 BrowserPluginBindings::~BrowserPluginBindings() { | 420 BrowserPluginBindings::~BrowserPluginBindings() { |
406 WebBindings::releaseObject(np_object_); | 421 WebBindings::releaseObject(np_object_); |
407 } | 422 } |
408 | 423 |
409 } // namespace content | 424 } // namespace content |
OLD | NEW |