| 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 26 matching lines...) Expand all Loading... |
| 37 #include "core/fetch/AccessControlStatus.h" | 37 #include "core/fetch/AccessControlStatus.h" |
| 38 #include "core/fetch/CrossOriginAccessControl.h" | 38 #include "core/fetch/CrossOriginAccessControl.h" |
| 39 #include "core/frame/LocalFrame.h" | 39 #include "core/frame/LocalFrame.h" |
| 40 #include "platform/heap/Handle.h" | 40 #include "platform/heap/Handle.h" |
| 41 #include "wtf/HashMap.h" | 41 #include "wtf/HashMap.h" |
| 42 #include "wtf/Noncopyable.h" | 42 #include "wtf/Noncopyable.h" |
| 43 #include "wtf/Vector.h" | 43 #include "wtf/Vector.h" |
| 44 #include "wtf/text/TextPosition.h" | 44 #include "wtf/text/TextPosition.h" |
| 45 #include <v8.h> | 45 #include <v8.h> |
| 46 | 46 |
| 47 struct NPObject; | |
| 48 | |
| 49 namespace blink { | 47 namespace blink { |
| 50 | 48 |
| 51 class DOMWrapperWorld; | 49 class DOMWrapperWorld; |
| 52 class ExecutionContext; | 50 class ExecutionContext; |
| 53 class HTMLDocument; | 51 class HTMLDocument; |
| 54 class HTMLPlugInElement; | 52 class HTMLPlugInElement; |
| 55 class KURL; | 53 class KURL; |
| 56 class ScriptState; | 54 class ScriptState; |
| 57 class ScriptSourceCode; | 55 class ScriptSourceCode; |
| 58 class SecurityOrigin; | 56 class SecurityOrigin; |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 bool executeScriptIfJavaScriptURL(const KURL&); | 106 bool executeScriptIfJavaScriptURL(const KURL&); |
| 109 | 107 |
| 110 v8::MaybeLocal<v8::Value> callFunction(v8::Local<v8::Function>, v8::Local<v8
::Value>, int argc, v8::Local<v8::Value> argv[]); | 108 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*); | 109 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 | 110 |
| 113 // Returns true if the current world is isolated, and has its own Content | 111 // 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 | 112 // Security Policy. In this case, the policy of the main world should be |
| 115 // ignored when evaluating resources injected into the DOM. | 113 // ignored when evaluating resources injected into the DOM. |
| 116 bool shouldBypassMainWorldCSP(); | 114 bool shouldBypassMainWorldCSP(); |
| 117 | 115 |
| 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*); | 116 PassRefPtr<SharedPersistent<v8::Object>> createPluginWrapper(Widget*); |
| 122 | 117 |
| 123 void enableEval(); | 118 void enableEval(); |
| 124 void disableEval(const String& errorMessage); | 119 void disableEval(const String& errorMessage); |
| 125 | 120 |
| 126 static bool canAccessFromCurrentOrigin(v8::Isolate*, Frame*); | 121 static bool canAccessFromCurrentOrigin(v8::Isolate*, Frame*); |
| 127 | 122 |
| 128 static void setCaptureCallStackForUncaughtExceptions(v8::Isolate*, bool); | 123 static void setCaptureCallStackForUncaughtExceptions(v8::Isolate*, bool); |
| 129 void collectIsolatedContexts(Vector<std::pair<ScriptState*, SecurityOrigin*>
>&); | 124 void collectIsolatedContexts(Vector<std::pair<ScriptState*, SecurityOrigin*>
>&); |
| 130 | 125 |
| 131 bool canExecuteScripts(ReasonForCallingCanExecuteScripts); | 126 bool canExecuteScripts(ReasonForCallingCanExecuteScripts); |
| 132 | 127 |
| 133 TextPosition eventHandlerPosition() const; | 128 TextPosition eventHandlerPosition() const; |
| 134 | 129 |
| 135 void clearWindowProxy(); | 130 void clearWindowProxy(); |
| 136 void updateDocument(); | 131 void updateDocument(); |
| 137 | 132 |
| 138 void namedItemAdded(HTMLDocument*, const AtomicString&); | 133 void namedItemAdded(HTMLDocument*, const AtomicString&); |
| 139 void namedItemRemoved(HTMLDocument*, const AtomicString&); | 134 void namedItemRemoved(HTMLDocument*, const AtomicString&); |
| 140 | 135 |
| 141 void updateSecurityOrigin(SecurityOrigin*); | 136 void updateSecurityOrigin(SecurityOrigin*); |
| 142 void clearScriptObjects(); | |
| 143 void cleanupScriptObjectsForPlugin(Widget*); | |
| 144 | 137 |
| 145 void clearForClose(); | 138 void clearForClose(); |
| 146 | 139 |
| 147 NPObject* createScriptObjectForPluginElement(HTMLPlugInElement*); | |
| 148 NPObject* windowScriptNPObject(); | |
| 149 | |
| 150 // Registers a v8 extension to be available on webpages. Will only | 140 // Registers a v8 extension to be available on webpages. Will only |
| 151 // affect v8 contexts initialized after this call. Takes ownership of | 141 // affect v8 contexts initialized after this call. Takes ownership of |
| 152 // the v8::Extension object passed. | 142 // the v8::Extension object passed. |
| 153 static void registerExtensionIfNeeded(v8::Extension*); | 143 static void registerExtensionIfNeeded(v8::Extension*); |
| 154 static V8Extensions& registeredExtensions(); | 144 static V8Extensions& registeredExtensions(); |
| 155 | 145 |
| 156 v8::Isolate* isolate() const { return m_windowProxyManager->isolate(); } | 146 v8::Isolate* isolate() const { return m_windowProxyManager->isolate(); } |
| 157 | 147 |
| 158 WindowProxyManager* getWindowProxyManager() const { return m_windowProxyMana
ger.get(); } | 148 WindowProxyManager* getWindowProxyManager() const { return m_windowProxyMana
ger.get(); } |
| 159 | 149 |
| 160 private: | 150 private: |
| 161 explicit ScriptController(LocalFrame*); | 151 explicit ScriptController(LocalFrame*); |
| 162 | 152 |
| 163 LocalFrame* frame() const { return toLocalFrame(m_windowProxyManager->frame(
)); } | 153 LocalFrame* frame() const { return toLocalFrame(m_windowProxyManager->frame(
)); } |
| 164 | 154 |
| 165 typedef WillBeHeapHashMap<RawPtrWillBeMember<Widget>, NPObject*> PluginObjec
tMap; | |
| 166 | |
| 167 v8::Local<v8::Value> evaluateScriptInMainWorld(const ScriptSourceCode&, Acce
ssControlStatus, ExecuteScriptPolicy, double* compilationFinishTime = 0); | 155 v8::Local<v8::Value> evaluateScriptInMainWorld(const ScriptSourceCode&, Acce
ssControlStatus, ExecuteScriptPolicy, double* compilationFinishTime = 0); |
| 168 | 156 |
| 169 OwnPtrWillBeMember<WindowProxyManager> m_windowProxyManager; | 157 OwnPtrWillBeMember<WindowProxyManager> m_windowProxyManager; |
| 170 const String* m_sourceURL; | 158 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 }; | 159 }; |
| 180 | 160 |
| 181 } // namespace blink | 161 } // namespace blink |
| 182 | 162 |
| 183 #endif // ScriptController_h | 163 #endif // ScriptController_h |
| OLD | NEW |