diff options
author | jianli@chromium.org <jianli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-17 16:13:09 +0000 |
---|---|---|
committer | jianli@chromium.org <jianli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-17 16:13:09 +0000 |
commit | d49af7fb105915e2298b9d9c4de11d02022ded3d (patch) | |
tree | 815c3510ed095c94e00827bc998c391d1f841768 | |
parent | 0f55d5c67c4b80b85aa56313dc09fc1b99518692 (diff) | |
download | chromium_src-d49af7fb105915e2298b9d9c4de11d02022ded3d.zip chromium_src-d49af7fb105915e2298b9d9c4de11d02022ded3d.tar.gz chromium_src-d49af7fb105915e2298b9d9c4de11d02022ded3d.tar.bz2 |
Enable building worker and use command line switch to turn on this feature.
Review URL: http://codereview.chromium.org/41029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11870 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/renderer_host/browser_render_process_host.cc | 1 | ||||
-rw-r--r-- | chrome/common/chrome_switches.cc | 3 | ||||
-rw-r--r-- | chrome/common/chrome_switches.h | 2 | ||||
-rw-r--r-- | chrome/renderer/render_thread.cc | 4 | ||||
-rwxr-xr-x | webkit/build/V8Bindings/build-generated-files.sh | 2 | ||||
-rw-r--r-- | webkit/build/webkit_common_defines.vsprops | 2 | ||||
-rw-r--r-- | webkit/port/bindings/v8/V8WorkerCustom.cpp | 6 | ||||
-rw-r--r-- | webkit/port/bindings/v8/WorkerContextExecutionProxy.cpp | 10 | ||||
-rw-r--r-- | webkit/port/bindings/v8/WorkerContextExecutionProxy.h | 4 |
9 files changed, 32 insertions, 2 deletions
diff --git a/chrome/browser/renderer_host/browser_render_process_host.cc b/chrome/browser/renderer_host/browser_render_process_host.cc index 877e0a7..4a0beed 100644 --- a/chrome/browser/renderer_host/browser_render_process_host.cc +++ b/chrome/browser/renderer_host/browser_render_process_host.cc @@ -262,6 +262,7 @@ bool BrowserRenderProcessHost::Init() { switches::kDisablePopupBlocking, switches::kUseLowFragHeapCrt, switches::kEnableVideo, + switches::kEnableWebWorkers, }; for (size_t i = 0; i < arraysize(switch_names); ++i) { diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc index 0a101b4..09755c9d 100644 --- a/chrome/common/chrome_switches.cc +++ b/chrome/common/chrome_switches.cc @@ -403,4 +403,7 @@ const wchar_t kIPCUseFIFO[] = L"ipc-use-fifo"; // Console Debugger when user clicks "Debug JavaScript". const wchar_t kEnableOutOfProcessDevTools[] = L"enable-oop-devtools"; +// Enable HTML5 Worker support +const wchar_t kEnableWebWorkers[] = L"enable-web-workers"; + } // namespace switches diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h index cd78d00..ea5909b 100644 --- a/chrome/common/chrome_switches.h +++ b/chrome/common/chrome_switches.h @@ -155,6 +155,8 @@ extern const wchar_t kIPCUseFIFO[]; extern const wchar_t kEnableOutOfProcessDevTools[]; +extern const wchar_t kEnableWebWorkers[]; + } // namespace switches #endif // CHROME_COMMON_CHROME_SWITCHES_H__ diff --git a/chrome/renderer/render_thread.cc b/chrome/renderer/render_thread.cc index 846e866..46d7e0a 100644 --- a/chrome/renderer/render_thread.cc +++ b/chrome/renderer/render_thread.cc @@ -252,4 +252,8 @@ void RenderThread::EnsureWebKitInitialized() { command_line.HasSwitch(switches::kRecordMode)) { WebKit::registerExtension(extensions_v8::PlaybackExtension::Get()); } + + if (command_line.HasSwitch(switches::kEnableWebWorkers)) { + WebKit::enableWebWorkers(true); + } } diff --git a/webkit/build/V8Bindings/build-generated-files.sh b/webkit/build/V8Bindings/build-generated-files.sh index f3e41f3..46a3dc0 100755 --- a/webkit/build/V8Bindings/build-generated-files.sh +++ b/webkit/build/V8Bindings/build-generated-files.sh @@ -43,7 +43,7 @@ export ENCODINGS_PREFIX="" # To see what FEATURE_DEFINES Apple uses, look at: # webkit/third_party/WebCore/Configurations/WebCore.xcconfig -export FEATURE_DEFINES="ENABLE_VIDEO ENABLE_SVG ENABLE_SVG_ANIMATION ENABLE_SVG_AS_IMAGE ENABLE_SVG_FONTS ENABLE_SVG_FOREIGN_OBJECT ENABLE_SVG_USE ENABLE_XPATH ENABLE_XSLT" +export FEATURE_DEFINES="ENABLE_WORKERS ENABLE_VIDEO ENABLE_SVG ENABLE_SVG_ANIMATION ENABLE_SVG_AS_IMAGE ENABLE_SVG_FONTS ENABLE_SVG_FOREIGN_OBJECT ENABLE_SVG_USE ENABLE_XPATH ENABLE_XSLT" # Adjust the number of jobs spawned according to the CPU count. if [ -z "$NUMBER_OF_PROCESSORS" ]; then diff --git a/webkit/build/webkit_common_defines.vsprops b/webkit/build/webkit_common_defines.vsprops index 0ea8266..e2ff37a5 100644 --- a/webkit/build/webkit_common_defines.vsprops +++ b/webkit/build/webkit_common_defines.vsprops @@ -6,6 +6,6 @@ > <Tool Name="VCCLCompilerTool" - PreprocessorDefinitions="ENABLE_DATABASE=1;ENABLE_DASHBOARD_SUPPORT=0;ENABLE_JAVASCRIPT_DEBUGGER=0;ENABLE_JSC_MULTIPLE_THREADS=0;ENABLE_ICONDATABASE=0;ENABLE_XSLT=1;ENABLE_XPATH=1;ENABLE_SVG=1;ENABLE_SVG_ANIMATION=1;ENABLE_SVG_AS_IMAGE=1;ENABLE_SVG_USE=1;ENABLE_SVG_FOREIGN_OBJECT=1;ENABLE_SVG_FONTS=1;ENABLE_VIDEO=1;ENABLE_WORKERS=0;WEBCORE_NAVIGATOR_PLATFORM="\"Win32\"";USE_GOOGLE_URL_LIBRARY;USE_SYSTEM_MALLOC=1;CRASH=__debugbreak;BUILDING_CHROMIUM__=1" + PreprocessorDefinitions="ENABLE_DATABASE=1;ENABLE_DASHBOARD_SUPPORT=0;ENABLE_JAVASCRIPT_DEBUGGER=0;ENABLE_JSC_MULTIPLE_THREADS=0;ENABLE_ICONDATABASE=0;ENABLE_XSLT=1;ENABLE_XPATH=1;ENABLE_SVG=1;ENABLE_SVG_ANIMATION=1;ENABLE_SVG_AS_IMAGE=1;ENABLE_SVG_USE=1;ENABLE_SVG_FOREIGN_OBJECT=1;ENABLE_SVG_FONTS=1;ENABLE_VIDEO=1;ENABLE_WORKERS=1;WEBCORE_NAVIGATOR_PLATFORM="\"Win32\"";USE_GOOGLE_URL_LIBRARY;USE_SYSTEM_MALLOC=1;CRASH=__debugbreak;BUILDING_CHROMIUM__=1" /> </VisualStudioPropertySheet> diff --git a/webkit/port/bindings/v8/V8WorkerCustom.cpp b/webkit/port/bindings/v8/V8WorkerCustom.cpp index 7426383..47be71c 100644 --- a/webkit/port/bindings/v8/V8WorkerCustom.cpp +++ b/webkit/port/bindings/v8/V8WorkerCustom.cpp @@ -34,6 +34,7 @@ #include "v8_binding.h" #include "v8_custom.h" #include "v8_proxy.h" +#include "WorkerContextExecutionProxy.h" #include "ExceptionCode.h" #include "Frame.h" @@ -48,6 +49,11 @@ namespace WebCore { CALLBACK_FUNC_DECL(WorkerConstructor) { INC_STATS(L"DOM.Worker.Constructor"); + if (!WorkerContextExecutionProxy::IsWebWorkersEnabled()) { + V8Proxy::ThrowError(V8Proxy::SYNTAX_ERROR, "Worker is not enabled."); + return v8::Undefined(); + } + if (!args.IsConstructCall()) { V8Proxy::ThrowError(V8Proxy::TYPE_ERROR, "DOM object constructor cannot be called as a function."); diff --git a/webkit/port/bindings/v8/WorkerContextExecutionProxy.cpp b/webkit/port/bindings/v8/WorkerContextExecutionProxy.cpp index b9ccf66..bfc4dec 100644 --- a/webkit/port/bindings/v8/WorkerContextExecutionProxy.cpp +++ b/webkit/port/bindings/v8/WorkerContextExecutionProxy.cpp @@ -45,6 +45,16 @@ namespace WebCore { +static bool g_worker_enabled = false; + +bool WorkerContextExecutionProxy::IsWebWorkersEnabled() { + return g_worker_enabled; +} + +void WorkerContextExecutionProxy::EnableWebWorkers(bool value) { + g_worker_enabled = true; +} + WorkerContextExecutionProxy::WorkerContextExecutionProxy( WorkerContext* workerContext) : m_workerContext(workerContext), diff --git a/webkit/port/bindings/v8/WorkerContextExecutionProxy.h b/webkit/port/bindings/v8/WorkerContextExecutionProxy.h index 2aaa160..9a5a0aa 100644 --- a/webkit/port/bindings/v8/WorkerContextExecutionProxy.h +++ b/webkit/port/bindings/v8/WorkerContextExecutionProxy.h @@ -88,6 +88,10 @@ class WorkerContextExecutionProxy { static v8::Handle<v8::Value> EventTargetToV8Object(EventTarget* target); static v8::Handle<v8::Value> WorkerContextToV8Object(WorkerContext* wc); + // Enables HTML5 worker support. + static void EnableWebWorkers(bool value); + static bool IsWebWorkersEnabled(); + private: void InitContextIfNeeded(); void Dispose(); |