Chromium Code Reviews| 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 |