OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008, 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2008, 2009 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 bool executeScriptIfJavaScriptURL(const KURL&); | 108 bool executeScriptIfJavaScriptURL(const KURL&); |
109 | 109 |
110 v8::MaybeLocal<v8::Value> callFunction(v8::Local<v8::Function>, v8::Local<v8
::Value>, int argc, v8::Local<v8::Value> argv[]); | 110 v8::MaybeLocal<v8::Value> callFunction(v8::Local<v8::Function>, v8::Local<v8
::Value>, int argc, v8::Local<v8::Value> argv[]); |
111 static v8::MaybeLocal<v8::Value> callFunction(ExecutionContext*, v8::Local<v
8::Function>, v8::Local<v8::Value> receiver, int argc, v8::Local<v8::Value> info
[], v8::Isolate*); | 111 static v8::MaybeLocal<v8::Value> callFunction(ExecutionContext*, v8::Local<v
8::Function>, v8::Local<v8::Value> receiver, int argc, v8::Local<v8::Value> info
[], v8::Isolate*); |
112 | 112 |
113 // Returns true if the current world is isolated, and has its own Content | 113 // Returns true if the current world is isolated, and has its own Content |
114 // Security Policy. In this case, the policy of the main world should be | 114 // Security Policy. In this case, the policy of the main world should be |
115 // ignored when evaluating resources injected into the DOM. | 115 // ignored when evaluating resources injected into the DOM. |
116 bool shouldBypassMainWorldCSP(); | 116 bool shouldBypassMainWorldCSP(); |
117 | 117 |
118 // Creates a property of the global object of a frame. | |
119 bool bindToWindowObject(LocalFrame*, const String& key, NPObject*); | |
120 | |
121 PassRefPtr<SharedPersistent<v8::Object>> createPluginWrapper(Widget*); | 118 PassRefPtr<SharedPersistent<v8::Object>> createPluginWrapper(Widget*); |
122 | 119 |
123 void enableEval(); | 120 void enableEval(); |
124 void disableEval(const String& errorMessage); | 121 void disableEval(const String& errorMessage); |
125 | 122 |
126 static bool canAccessFromCurrentOrigin(LocalFrame*); | 123 static bool canAccessFromCurrentOrigin(LocalFrame*); |
127 | 124 |
128 static void setCaptureCallStackForUncaughtExceptions(v8::Isolate*, bool); | 125 static void setCaptureCallStackForUncaughtExceptions(v8::Isolate*, bool); |
129 void collectIsolatedContexts(Vector<std::pair<ScriptState*, SecurityOrigin*>
>&); | 126 void collectIsolatedContexts(Vector<std::pair<ScriptState*, SecurityOrigin*>
>&); |
130 | 127 |
131 bool canExecuteScripts(ReasonForCallingCanExecuteScripts); | 128 bool canExecuteScripts(ReasonForCallingCanExecuteScripts); |
132 | 129 |
133 TextPosition eventHandlerPosition() const; | 130 TextPosition eventHandlerPosition() const; |
134 | 131 |
135 void clearWindowProxy(); | 132 void clearWindowProxy(); |
136 void updateDocument(); | 133 void updateDocument(); |
137 | 134 |
138 void namedItemAdded(HTMLDocument*, const AtomicString&); | 135 void namedItemAdded(HTMLDocument*, const AtomicString&); |
139 void namedItemRemoved(HTMLDocument*, const AtomicString&); | 136 void namedItemRemoved(HTMLDocument*, const AtomicString&); |
140 | 137 |
141 void updateSecurityOrigin(SecurityOrigin*); | 138 void updateSecurityOrigin(SecurityOrigin*); |
142 void clearScriptObjects(); | |
143 void cleanupScriptObjectsForPlugin(Widget*); | |
144 | 139 |
145 void clearForClose(); | 140 void clearForClose(); |
146 | 141 |
147 NPObject* createScriptObjectForPluginElement(HTMLPlugInElement*); | |
148 NPObject* windowScriptNPObject(); | |
149 | |
150 // Registers a v8 extension to be available on webpages. Will only | 142 // Registers a v8 extension to be available on webpages. Will only |
151 // affect v8 contexts initialized after this call. Takes ownership of | 143 // affect v8 contexts initialized after this call. Takes ownership of |
152 // the v8::Extension object passed. | 144 // the v8::Extension object passed. |
153 static void registerExtensionIfNeeded(v8::Extension*); | 145 static void registerExtensionIfNeeded(v8::Extension*); |
154 static V8Extensions& registeredExtensions(); | 146 static V8Extensions& registeredExtensions(); |
155 | 147 |
156 v8::Isolate* isolate() const { return m_windowProxyManager->isolate(); } | 148 v8::Isolate* isolate() const { return m_windowProxyManager->isolate(); } |
157 | 149 |
158 WindowProxyManager* windowProxyManager() const { return m_windowProxyManager
.get(); } | 150 WindowProxyManager* windowProxyManager() const { return m_windowProxyManager
.get(); } |
159 | 151 |
160 private: | 152 private: |
161 explicit ScriptController(LocalFrame*); | 153 explicit ScriptController(LocalFrame*); |
162 | 154 |
163 LocalFrame* frame() const { return toLocalFrame(m_windowProxyManager->frame(
)); } | 155 LocalFrame* frame() const { return toLocalFrame(m_windowProxyManager->frame(
)); } |
164 | 156 |
165 typedef WillBeHeapHashMap<RawPtrWillBeMember<Widget>, NPObject*> PluginObjec
tMap; | |
166 | |
167 v8::Local<v8::Value> evaluateScriptInMainWorld(const ScriptSourceCode&, Acce
ssControlStatus, ExecuteScriptPolicy, double* compilationFinishTime = 0); | 157 v8::Local<v8::Value> evaluateScriptInMainWorld(const ScriptSourceCode&, Acce
ssControlStatus, ExecuteScriptPolicy, double* compilationFinishTime = 0); |
168 | 158 |
169 OwnPtrWillBeMember<WindowProxyManager> m_windowProxyManager; | 159 OwnPtrWillBeMember<WindowProxyManager> m_windowProxyManager; |
170 const String* m_sourceURL; | 160 const String* m_sourceURL; |
171 | |
172 // A mapping between Widgets and their corresponding script object. | |
173 // This list is used so that when the plugin dies, we can immediately | |
174 // invalidate all sub-objects which are associated with that plugin. | |
175 // The frame keeps a NPObject reference for each item on the list. | |
176 PluginObjectMap m_pluginObjects; | |
177 | |
178 NPObject* m_windowScriptNPObject; | |
179 }; | 161 }; |
180 | 162 |
181 } // namespace blink | 163 } // namespace blink |
182 | 164 |
183 #endif // ScriptController_h | 165 #endif // ScriptController_h |
OLD | NEW |