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

Side by Side Diff: third_party/WebKit/Source/platform/bindings/ScriptState.h

Issue 2843603002: Move ScriptWrappable and dependencies to platform/bindings (Closed)
Patch Set: Rebase and try again Created 3 years, 7 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #ifndef ScriptState_h 5 #ifndef ScriptState_h
6 #define ScriptState_h 6 #define ScriptState_h
7 7
8 #include <memory> 8 #include <memory>
9 9
10 #include "bindings/core/v8/ScopedPersistent.h" 10 #include "platform/PlatformExport.h"
11 #include "bindings/core/v8/V8PerContextData.h" 11 #include "platform/bindings/ScopedPersistent.h"
12 #include "core/CoreExport.h" 12 #include "platform/bindings/V8PerContextData.h"
13 #include "platform/wtf/RefCounted.h" 13 #include "platform/wtf/RefCounted.h"
14 #include "v8/include/v8-debug.h" 14 #include "v8/include/v8-debug.h"
15 #include "v8/include/v8.h" 15 #include "v8/include/v8.h"
16 16
17 namespace blink { 17 namespace blink {
18 18
19 class DOMWrapperWorld; 19 class DOMWrapperWorld;
20 class ScriptValue; 20 class ScriptValue;
21 21
22 // ScriptState is an abstraction class that holds all information about script 22 // ScriptState is an abstraction class that holds all information about script
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 // world. However, you cannot store ScriptState on a DOM object that has 57 // world. However, you cannot store ScriptState on a DOM object that has
58 // an IDL interface because the DOM object can be accessed from multiple 58 // an IDL interface because the DOM object can be accessed from multiple
59 // worlds. If ScriptState of one world "leak"s to another world, you will 59 // worlds. If ScriptState of one world "leak"s to another world, you will
60 // end up with leaking any JavaScript objects from one Chrome extension 60 // end up with leaking any JavaScript objects from one Chrome extension
61 // to another Chrome extension, which is a severe security bug. 61 // to another Chrome extension, which is a severe security bug.
62 // 62 //
63 // Lifetime: 63 // Lifetime:
64 // ScriptState is created when v8::Context is created. 64 // ScriptState is created when v8::Context is created.
65 // ScriptState is destroyed when v8::Context is garbage-collected and 65 // ScriptState is destroyed when v8::Context is garbage-collected and
66 // all V8 proxy objects that have references to the ScriptState are destructed. 66 // all V8 proxy objects that have references to the ScriptState are destructed.
67 class CORE_EXPORT ScriptState : public RefCounted<ScriptState> { 67 class PLATFORM_EXPORT ScriptState : public RefCounted<ScriptState> {
68 WTF_MAKE_NONCOPYABLE(ScriptState); 68 WTF_MAKE_NONCOPYABLE(ScriptState);
69 69
70 public: 70 public:
71 class Scope { 71 class Scope {
72 STACK_ALLOCATED(); 72 STACK_ALLOCATED();
73 73
74 public: 74 public:
75 // You need to make sure that scriptState->context() is not empty before 75 // You need to make sure that scriptState->context() is not empty before
76 // creating a Scope. 76 // creating a Scope.
77 explicit Scope(ScriptState* script_state) 77 explicit Scope(ScriptState* script_state)
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 } 192 }
193 193
194 private: 194 private:
195 RefPtr<ScriptState> script_state_; 195 RefPtr<ScriptState> script_state_;
196 ScopedPersistent<v8::Context> context_; 196 ScopedPersistent<v8::Context> context_;
197 }; 197 };
198 198
199 } // namespace blink 199 } // namespace blink
200 200
201 #endif // ScriptState_h 201 #endif // ScriptState_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698