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

Side by Side Diff: content/renderer/browser_plugin/browser_plugin_bindings.cc

Issue 10829225: Browser Plugin: Add HTML5-like postMessage support (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merged with ToT. Addressed creis@'s comments Created 8 years, 2 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
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698