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

Side by Side Diff: content/renderer/pepper/ppb_var_deprecated_impl.cc

Issue 1172143004: Block scripting in plugin teardown during Document unload. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Restrict the legacy PP_Var too Created 5 years, 6 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
« no previous file with comments | « content/renderer/pepper/pepper_plugin_instance_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "content/renderer/pepper/ppb_var_deprecated_impl.h" 5 #include "content/renderer/pepper/ppb_var_deprecated_impl.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "content/renderer/pepper/host_globals.h" 9 #include "content/renderer/pepper/host_globals.h"
10 #include "content/renderer/pepper/message_channel.h" 10 #include "content/renderer/pepper/message_channel.h"
11 #include "content/renderer/pepper/pepper_plugin_instance_impl.h" 11 #include "content/renderer/pepper/pepper_plugin_instance_impl.h"
12 #include "content/renderer/pepper/pepper_try_catch.h" 12 #include "content/renderer/pepper/pepper_try_catch.h"
13 #include "content/renderer/pepper/plugin_module.h" 13 #include "content/renderer/pepper/plugin_module.h"
14 #include "content/renderer/pepper/plugin_object.h" 14 #include "content/renderer/pepper/plugin_object.h"
15 #include "content/renderer/pepper/v8object_var.h" 15 #include "content/renderer/pepper/v8object_var.h"
16 #include "ppapi/c/dev/ppb_var_deprecated.h" 16 #include "ppapi/c/dev/ppb_var_deprecated.h"
17 #include "ppapi/c/ppb_var.h" 17 #include "ppapi/c/ppb_var.h"
18 #include "ppapi/shared_impl/ppb_var_shared.h" 18 #include "ppapi/shared_impl/ppb_var_shared.h"
19 #include "third_party/WebKit/public/web/WebDocument.h" 19 #include "third_party/WebKit/public/web/WebDocument.h"
20 #include "third_party/WebKit/public/web/WebElement.h" 20 #include "third_party/WebKit/public/web/WebElement.h"
21 #include "third_party/WebKit/public/web/WebLocalFrame.h" 21 #include "third_party/WebKit/public/web/WebLocalFrame.h"
22 #include "third_party/WebKit/public/web/WebPluginContainer.h" 22 #include "third_party/WebKit/public/web/WebPluginContainer.h"
23 #include "third_party/WebKit/public/web/WebPluginScriptForbiddenScope.h"
23 #include "third_party/WebKit/public/web/WebScopedUserGesture.h" 24 #include "third_party/WebKit/public/web/WebScopedUserGesture.h"
24 25
25 using ppapi::V8ObjectVar; 26 using ppapi::V8ObjectVar;
26 using ppapi::PpapiGlobals; 27 using ppapi::PpapiGlobals;
27 using ppapi::ScopedPPVar; 28 using ppapi::ScopedPPVar;
28 using ppapi::ScopedPPVarArray; 29 using ppapi::ScopedPPVarArray;
29 using ppapi::StringVar; 30 using ppapi::StringVar;
30 using ppapi::Var; 31 using ppapi::Var;
31 32
32 namespace content { 33 namespace content {
(...skipping 16 matching lines...) Expand all
49 } 50 }
50 51
51 // Check if the object is valid. If it isn't, set an exception and return 52 // Check if the object is valid. If it isn't, set an exception and return
52 // false. 53 // false.
53 bool IsValid(PP_Var* exception) { 54 bool IsValid(PP_Var* exception) {
54 // If we already have an exception, then the call is invalid according to 55 // If we already have an exception, then the call is invalid according to
55 // the unittests. 56 // the unittests.
56 if (exception && exception->type != PP_VARTYPE_UNDEFINED) 57 if (exception && exception->type != PP_VARTYPE_UNDEFINED)
57 return false; 58 return false;
58 if (instance_) 59 if (instance_)
59 return true; 60 return !instance_->is_deleted() ||
61 !blink::WebPluginScriptForbiddenScope::isForbidden();
60 if (exception) 62 if (exception)
61 *exception = ppapi::StringVar::StringToPPVar(kInvalidObjectException); 63 *exception = ppapi::StringVar::StringToPPVar(kInvalidObjectException);
62 return false; 64 return false;
63 } 65 }
64 // Lazily grab the object so that the handle is created in the current handle 66 // Lazily grab the object so that the handle is created in the current handle
65 // scope. 67 // scope.
66 v8::Local<v8::Object> GetObject() { return object_var_->GetHandle(); } 68 v8::Local<v8::Object> GetObject() { return object_var_->GetHandle(); }
67 PepperPluginInstanceImpl* instance() { return instance_; } 69 PepperPluginInstanceImpl* instance() { return instance_; }
68 V8VarConverter* converter() { return converter_.get(); } 70 V8VarConverter* converter() { return converter_.get(); }
69 71
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 &CallDeprecated, 361 &CallDeprecated,
360 &Construct, 362 &Construct,
361 &IsInstanceOfDeprecated, 363 &IsInstanceOfDeprecated,
362 &CreateObjectDeprecated, 364 &CreateObjectDeprecated,
363 &CreateObjectWithModuleDeprecated, }; 365 &CreateObjectWithModuleDeprecated, };
364 366
365 return &var_deprecated_interface; 367 return &var_deprecated_interface;
366 } 368 }
367 369
368 } // namespace content 370 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/pepper/pepper_plugin_instance_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698