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

Unified Diff: sky/engine/bindings/core/v8/ScriptController.cpp

Issue 922053002: Remove unused V8 integration code in Sky (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/engine/bindings/core/v8/ScriptController.h ('k') | sky/engine/bindings/core/v8/ScriptFunctionCall.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/engine/bindings/core/v8/ScriptController.cpp
diff --git a/sky/engine/bindings/core/v8/ScriptController.cpp b/sky/engine/bindings/core/v8/ScriptController.cpp
deleted file mode 100644
index 6ec78c1cbdea8afff92983c328290e038993990d..0000000000000000000000000000000000000000
--- a/sky/engine/bindings/core/v8/ScriptController.cpp
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * Copyright (C) 2008, 2009 Google Inc. All rights reserved.
- * Copyright (C) 2009 Apple Inc. All rights reserved.
- * Copyright (C) 2014 Opera Software ASA. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "sky/engine/config.h"
-#include "sky/engine/bindings/core/v8/ScriptController.h"
-
-#include "bindings/core/v8/V8Event.h"
-#include "bindings/core/v8/V8HTMLElement.h"
-#include "bindings/core/v8/V8Window.h"
-#include "sky/engine/bindings/core/v8/BindingSecurity.h"
-#include "sky/engine/bindings/core/v8/ScriptCallStackFactory.h"
-#include "sky/engine/bindings/core/v8/ScriptSourceCode.h"
-#include "sky/engine/bindings/core/v8/ScriptValue.h"
-#include "sky/engine/bindings/core/v8/V8Binding.h"
-#include "sky/engine/bindings/core/v8/V8GCController.h"
-#include "sky/engine/bindings/core/v8/V8PerContextData.h"
-#include "sky/engine/bindings/core/v8/V8ScriptRunner.h"
-#include "sky/engine/bindings/core/v8/WindowProxy.h"
-#include "sky/engine/core/app/Module.h"
-#include "sky/engine/core/dom/Document.h"
-#include "sky/engine/core/dom/Node.h"
-#include "sky/engine/core/events/Event.h"
-#include "sky/engine/core/events/EventListener.h"
-#include "sky/engine/core/frame/LocalDOMWindow.h"
-#include "sky/engine/core/frame/LocalFrame.h"
-#include "sky/engine/core/frame/Settings.h"
-#include "sky/engine/core/html/imports/HTMLImportChild.h"
-#include "sky/engine/core/html/imports/HTMLImportLoader.h"
-#include "sky/engine/core/html/parser/HTMLDocumentParser.h"
-#include "sky/engine/core/loader/FrameLoaderClient.h"
-#include "sky/engine/platform/NotImplemented.h"
-#include "sky/engine/platform/TraceEvent.h"
-#include "sky/engine/platform/Widget.h"
-#include "sky/engine/public/platform/Platform.h"
-#include "sky/engine/core/inspector/ScriptCallStack.h"
-#include "sky/engine/wtf/CurrentTime.h"
-#include "sky/engine/wtf/StdLibExtras.h"
-#include "sky/engine/wtf/StringExtras.h"
-#include "sky/engine/wtf/text/CString.h"
-#include "sky/engine/wtf/text/StringBuilder.h"
-#include "sky/engine/wtf/text/TextPosition.h"
-
-namespace blink {
-
-bool ScriptController::canAccessFromCurrentOrigin(LocalFrame *frame)
-{
- if (!frame)
- return false;
- v8::Isolate* isolate = toIsolate(frame);
- return !isolate->InContext() || BindingSecurity::shouldAllowAccessToFrame(isolate, frame);
-}
-
-ScriptController::ScriptController(LocalFrame* frame)
- : m_frame(frame)
- , m_sourceURL(0)
- , m_isolate(v8::Isolate::GetCurrent())
- , m_windowProxy(WindowProxy::create(frame, DOMWrapperWorld::mainWorld(), m_isolate))
-{
-}
-
-ScriptController::~ScriptController()
-{
- // WindowProxy::clearForClose() must be invoked before destruction starts.
- ASSERT(!m_windowProxy->isContextInitialized());
-}
-
-void ScriptController::clearForClose()
-{
- double start = currentTime();
- m_windowProxy->clearForClose();
- for (IsolatedWorldMap::iterator iter = m_isolatedWorlds.begin(); iter != m_isolatedWorlds.end(); ++iter)
- iter->value->clearForClose();
- blink::Platform::current()->histogramCustomCounts("WebCore.ScriptController.clearForClose", (currentTime() - start) * 1000, 0, 10000, 50);
-}
-
-v8::Local<v8::Value> ScriptController::callFunction(v8::Handle<v8::Function> function, v8::Handle<v8::Value> receiver, int argc, v8::Handle<v8::Value> info[])
-{
- // Keep LocalFrame (and therefore ScriptController) alive.
- RefPtr<LocalFrame> protect(m_frame);
- return ScriptController::callFunction(m_frame->document(), function, receiver, argc, info, m_isolate);
-}
-
-v8::Local<v8::Value> ScriptController::callFunction(ExecutionContext* context, v8::Handle<v8::Function> function, v8::Handle<v8::Value> receiver, int argc, v8::Handle<v8::Value> info[], v8::Isolate* isolate)
-{
- return V8ScriptRunner::callFunction(function, context, receiver, argc, info, isolate);
-}
-
-v8::Local<v8::Value> ScriptController::executeScriptAndReturnValue(v8::Handle<v8::Context> context, const ScriptSourceCode& source)
-{
- v8::Local<v8::Value> result;
- {
- V8CacheOptions v8CacheOptions(V8CacheOptionsOff);
- if (m_frame->settings())
- v8CacheOptions = m_frame->settings()->v8CacheOptions();
-
- // Isolate exceptions that occur when compiling and executing
- // the code. These exceptions should not interfere with
- // javascript code we might evaluate from C++ when returning
- // from here.
- v8::TryCatch tryCatch;
- tryCatch.SetVerbose(true);
-
- v8::Handle<v8::Script> script = V8ScriptRunner::compileScript(source, m_isolate, v8CacheOptions);
-
- // Keep LocalFrame (and therefore ScriptController) alive.
- RefPtr<LocalFrame> protect(m_frame);
- result = V8ScriptRunner::runCompiledScript(script, m_frame->document(), m_isolate);
- ASSERT(!tryCatch.HasCaught() || result.IsEmpty());
- }
-
- return result;
-}
-
-bool ScriptController::initializeMainWorld()
-{
- if (m_windowProxy->isContextInitialized())
- return false;
- return windowProxy(DOMWrapperWorld::mainWorld())->isContextInitialized();
-}
-
-WindowProxy* ScriptController::existingWindowProxy(DOMWrapperWorld& world)
-{
- if (world.isMainWorld())
- return m_windowProxy->isContextInitialized() ? m_windowProxy.get() : 0;
- return 0;
-}
-
-WindowProxy* ScriptController::windowProxy(DOMWrapperWorld& world)
-{
- m_windowProxy->initializeIfNeeded();
- return m_windowProxy.get();
-}
-
-V8Extensions& ScriptController::registeredExtensions()
-{
- DEFINE_STATIC_LOCAL(V8Extensions, extensions, ());
- return extensions;
-}
-
-void ScriptController::registerExtensionIfNeeded(v8::Extension* extension)
-{
- const V8Extensions& extensions = registeredExtensions();
- for (size_t i = 0; i < extensions.size(); ++i) {
- if (extensions[i] == extension)
- return;
- }
- v8::RegisterExtension(extension);
- registeredExtensions().append(extension);
-}
-
-void ScriptController::clearWindowProxy()
-{
- double start = currentTime();
- // V8 binding expects ScriptController::clearWindowProxy only be called
- // when a frame is loading a new page. This creates a new context for the new page.
-
- m_windowProxy->clearForNavigation();
- for (IsolatedWorldMap::iterator iter = m_isolatedWorlds.begin(); iter != m_isolatedWorlds.end(); ++iter)
- iter->value->clearForNavigation();
- blink::Platform::current()->histogramCustomCounts("WebCore.ScriptController.clearWindowProxy", (currentTime() - start) * 1000, 0, 10000, 50);
-}
-
-void ScriptController::setCaptureCallStackForUncaughtExceptions(bool value)
-{
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(value, ScriptCallStack::maxCallStackSizeToCapture, stackTraceOptions);
-}
-
-void ScriptController::setWorldDebugId(int debuggerId)
-{
- ASSERT(debuggerId > 0);
- if (!m_windowProxy || !m_windowProxy->isContextInitialized())
- return;
- v8::HandleScope scope(m_isolate);
- v8::Local<v8::Context> context = m_windowProxy->context();
- V8PerContextDebugData::setContextDebugData(context, "page", debuggerId);
-}
-
-void ScriptController::updateDocument()
-{
- // For an uninitialized main window windowProxy, do not incur the cost of context initialization.
- if (!m_windowProxy->isGlobalInitialized())
- return;
-
- if (!initializeMainWorld())
- windowProxy(DOMWrapperWorld::mainWorld())->updateDocument();
-}
-
-void ScriptController::executeScriptInMainWorld(const String& script)
-{
- v8::HandleScope handleScope(m_isolate);
- evaluateScriptInMainWorld(ScriptSourceCode(script));
-}
-
-void ScriptController::executeScriptInMainWorld(const ScriptSourceCode& sourceCode)
-{
- v8::HandleScope handleScope(m_isolate);
- evaluateScriptInMainWorld(sourceCode);
-}
-
-v8::Local<v8::Value> ScriptController::executeScriptInMainWorldAndReturnValue(const ScriptSourceCode& sourceCode)
-{
- return evaluateScriptInMainWorld(sourceCode);
-}
-
-v8::Local<v8::Value> ScriptController::evaluateScriptInMainWorld(const ScriptSourceCode& sourceCode)
-{
- String sourceURL = sourceCode.url();
- const String* savedSourceURL = m_sourceURL;
- m_sourceURL = &sourceURL;
-
- v8::EscapableHandleScope handleScope(m_isolate);
- v8::Handle<v8::Context> context = toV8Context(m_frame, DOMWrapperWorld::mainWorld());
- if (context.IsEmpty())
- return v8::Local<v8::Value>();
-
- ScriptState* scriptState = ScriptState::from(context);
- ScriptState::Scope scope(scriptState);
-
- RefPtr<LocalFrame> protect(m_frame);
-
- v8::Local<v8::Value> object = executeScriptAndReturnValue(scriptState->context(), sourceCode);
- m_sourceURL = savedSourceURL;
-
- if (object.IsEmpty())
- return v8::Local<v8::Value>();
-
- return handleScope.Escape(object);
-}
-
-void ScriptController::executeModuleScript(AbstractModule& module, const String& source, const TextPosition& textPosition)
-{
- v8::HandleScope handleScope(m_isolate);
- v8::Handle<v8::Context> context = toV8Context(m_frame, DOMWrapperWorld::mainWorld());
- if (context.IsEmpty())
- return;
-
- ScriptState* scriptState = ScriptState::from(context);
- ScriptState::Scope scope(scriptState);
-
- RefPtr<LocalFrame> protect(m_frame);
-
- v8::TryCatch tryCatch;
- tryCatch.SetVerbose(true);
-
- V8ScriptModule scriptModule;
- scriptModule.resourceName = module.url();
- scriptModule.textPosition = textPosition;
- scriptModule.moduleObject = toV8(&module, context->Global(), m_isolate);
- scriptModule.source = source;
-
- if (HTMLImport* parent = module.document()->import()) {
- for (HTMLImportChild* child = static_cast<HTMLImportChild*>(parent->firstChild());
- child; child = static_cast<HTMLImportChild*>(child->next())) {
- if (Element* link = child->link()) {
- String name = link->getAttribute(HTMLNames::asAttr);
- if (!name.isEmpty()) {
- scriptModule.formalDependencies.append(name);
- v8::Handle<v8::Value> actual;
- if (Module* childModule = child->module())
- actual = childModule->exports(scriptState).v8Value();
- if (actual.IsEmpty())
- actual = v8::Undefined(m_isolate);
- scriptModule.resolvedDependencies.append(actual);
- }
- }
- }
- }
-
- V8ScriptRunner::runModule(m_isolate, m_frame->document(), scriptModule);
-}
-
-} // namespace blink
« no previous file with comments | « sky/engine/bindings/core/v8/ScriptController.h ('k') | sky/engine/bindings/core/v8/ScriptFunctionCall.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698