diff options
Diffstat (limited to 'webkit/glue')
-rw-r--r-- | webkit/glue/webview_delegate.h | 6 | ||||
-rw-r--r-- | webkit/glue/webworker.h | 31 | ||||
-rw-r--r-- | webkit/glue/webworker_impl.cc | 89 | ||||
-rw-r--r-- | webkit/glue/webworker_impl.h | 52 | ||||
-rw-r--r-- | webkit/glue/webworkerclient.h | 37 | ||||
-rw-r--r-- | webkit/glue/webworkerclient_impl.cc | 73 | ||||
-rw-r--r-- | webkit/glue/webworkerclient_impl.h | 61 |
7 files changed, 156 insertions, 193 deletions
diff --git a/webkit/glue/webview_delegate.h b/webkit/glue/webview_delegate.h index d62024f..d2065c5 100644 --- a/webkit/glue/webview_delegate.h +++ b/webkit/glue/webview_delegate.h @@ -39,6 +39,8 @@ class WebMediaPlayerDelegate; namespace WebKit { class WebDragData; +class WebWorker; +class WebWorkerClient; struct WebPoint; struct WebRect; } @@ -58,8 +60,6 @@ class WebRequest; class WebResponse; class WebView; class WebWidget; -class WebWorker; -class WebWorkerClient; enum NavigationGesture { NavigationGestureUser, // User initiated navigation/load. This is not @@ -125,7 +125,7 @@ class WebViewDelegate : virtual public WebWidgetDelegate { } // This method is called when the renderer creates a worker object. - virtual WebWorker* CreateWebWorker(WebWorkerClient* client) { + virtual WebKit::WebWorker* CreateWebWorker(WebKit::WebWorkerClient* client) { return NULL; } diff --git a/webkit/glue/webworker.h b/webkit/glue/webworker.h deleted file mode 100644 index 302fa24..0000000 --- a/webkit/glue/webworker.h +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef WEBKIT_GLUE_WEBWORKER_H_ -#define WEBKIT_GLUE_WEBWORKER_H_ - -#include "base/string16.h" - -class GURL; -class WebWorkerClient; - -// This is a version of the WebCore::WorkerContextProxy interface that uses -// Chrome data types. -class WebWorker { - public: - virtual ~WebWorker() { } - - // Creates a WebWorker object that wraps around the WebKit code that implements - // web workers. - static WebWorker* Create(WebWorkerClient* client); - - virtual void StartWorkerContext(const GURL& script_url, - const string16& user_agent, - const string16& source_code) = 0; - virtual void TerminateWorkerContext() = 0; - virtual void PostMessageToWorkerContext(const string16& message) = 0; - virtual void WorkerObjectDestroyed() = 0; -}; - -#endif // #ifndef WEBKIT_GLUE_WEBWORKER_H_ diff --git a/webkit/glue/webworker_impl.cc b/webkit/glue/webworker_impl.cc index 9fdf1fc..a8e461d 100644 --- a/webkit/glue/webworker_impl.cc +++ b/webkit/glue/webworker_impl.cc @@ -18,16 +18,25 @@ #include "base/logging.h" #include "webkit/glue/glue_util.h" -#include "webkit/glue/webworkerclient.h" #include "webkit/glue/webworker_impl.h" +#include "third_party/WebKit/WebKit/chromium/public/WebString.h" +#include "third_party/WebKit/WebKit/chromium/public/WebURL.h" +#include "third_party/WebKit/WebKit/chromium/public/WebWorkerClient.h" +using WebKit::WebWorker; +using WebKit::WebWorkerClient; +using WebKit::WebString; +using WebKit::WebURL; #if ENABLE(WORKERS) -WebWorker* WebWorker::Create(WebWorkerClient* client) { +namespace WebKit { + +WebWorker* WebWorker::create(WebWorkerClient* client) { return new WebWorkerImpl(client); } +} // This function is called on the main thread to force to initialize some static // values used in WebKit before any worker thread is started. This is because in @@ -62,17 +71,19 @@ void WebWorkerImpl::PostMessageToWorkerContextTask( static_cast<WebCore::WorkerContext*>(context); worker_context->dispatchMessage(message); - this_ptr->client_->ConfirmMessageFromWorkerObject( + this_ptr->client_->confirmMessageFromWorkerObject( worker_context->hasPendingActivity()); } -void WebWorkerImpl::StartWorkerContext(const GURL& script_url, - const string16& user_agent, - const string16& source_code) { +// WebWorker ------------------------------------------------------------------- + +void WebWorkerImpl::startWorkerContext(const WebURL& script_url, + const WebString& user_agent, + const WebString& source_code) { worker_thread_ = WebCore::WorkerThread::create( - webkit_glue::GURLToKURL(script_url), - webkit_glue::String16ToString(user_agent), - webkit_glue::String16ToString(source_code), + webkit_glue::WebURLToKURL(script_url), + webkit_glue::WebStringToString(user_agent), + webkit_glue::WebStringToString(source_code), this); // Worker initialization means a pending activity. @@ -81,32 +92,34 @@ void WebWorkerImpl::StartWorkerContext(const GURL& script_url, worker_thread_->start(); } -void WebWorkerImpl::TerminateWorkerContext() { +void WebWorkerImpl::terminateWorkerContext() { worker_thread_->stop(); } -void WebWorkerImpl::PostMessageToWorkerContext(const string16& message) { +void WebWorkerImpl::postMessageToWorkerContext(const WebString& message) { worker_thread_->runLoop().postTask(WebCore::createCallbackTask( &PostMessageToWorkerContextTask, this, - webkit_glue::String16ToString(message))); + webkit_glue::WebStringToString(message))); } -void WebWorkerImpl::WorkerObjectDestroyed() { +void WebWorkerImpl::workerObjectDestroyed() { } +// WorkerObjectProxy ----------------------------------------------------------- + void WebWorkerImpl::postMessageToWorkerObject(const WebCore::String& message) { - client_->PostMessageToWorkerObject(webkit_glue::StringToString16(message)); + client_->postMessageToWorkerObject(webkit_glue::StringToWebString(message)); } void WebWorkerImpl::postExceptionToWorkerObject( - const WebCore::String& errorMessage, - int lineNumber, - const WebCore::String& sourceURL) { - client_->PostExceptionToWorkerObject( - webkit_glue::StringToString16(errorMessage), - lineNumber, - webkit_glue::StringToString16(sourceURL)); + const WebCore::String& error_message, + int line_number, + const WebCore::String& source_url) { + client_->postExceptionToWorkerObject( + webkit_glue::StringToWebString(error_message), + line_number, + webkit_glue::StringToWebString(source_url)); } void WebWorkerImpl::postConsoleMessageToWorkerObject( @@ -114,27 +127,27 @@ void WebWorkerImpl::postConsoleMessageToWorkerObject( WebCore::MessageSource source, WebCore::MessageLevel level, const WebCore::String& message, - int lineNumber, - const WebCore::String& sourceURL) { - client_->PostConsoleMessageToWorkerObject( - destination, - source, - level, - webkit_glue::StringToString16(message), - lineNumber, - webkit_glue::StringToString16(sourceURL)); + int line_number, + const WebCore::String& source_url) { + client_->postConsoleMessageToWorkerObject( + static_cast<int>(destination), + static_cast<int>(source), + static_cast<int>(level), + webkit_glue::StringToWebString(message), + line_number, + webkit_glue::StringToWebString(source_url)); } -void WebWorkerImpl::confirmMessageFromWorkerObject(bool hasPendingActivity) { - client_->ConfirmMessageFromWorkerObject(hasPendingActivity); +void WebWorkerImpl::confirmMessageFromWorkerObject(bool has_pending_activity) { + client_->confirmMessageFromWorkerObject(has_pending_activity); } -void WebWorkerImpl::reportPendingActivity(bool hasPendingActivity) { - client_->ReportPendingActivity(hasPendingActivity); +void WebWorkerImpl::reportPendingActivity(bool has_pending_activity) { + client_->reportPendingActivity(has_pending_activity); } void WebWorkerImpl::workerContextDestroyed() { - client_->WorkerContextDestroyed(); + client_->workerContextDestroyed(); // The lifetime of this proxy is controlled by the worker context. delete this; @@ -142,8 +155,12 @@ void WebWorkerImpl::workerContextDestroyed() { #else -WebWorker* WebWorker::Create(WebWorkerClient* client) { +namespace WebKit { + +WebWorker* WebWorker::create(WebWorkerClient* client) { return NULL; } +} + #endif diff --git a/webkit/glue/webworker_impl.h b/webkit/glue/webworker_impl.h index 4af1f64..8ae78c6 100644 --- a/webkit/glue/webworker_impl.h +++ b/webkit/glue/webworker_impl.h @@ -5,7 +5,7 @@ #ifndef WEBKIT_GLUE_WEBWORKER_IMPL_H_ #define WEBKIT_GLUE_WEBWORKER_IMPL_H_ -#include "webkit/glue/webworker.h" +#include "third_party/WebKit/WebKit/chromium/public/WebWorker.h" #if ENABLE(WORKERS) @@ -26,33 +26,35 @@ class WorkerThread; // WebCore::WorkerObjectProxy, this class will conver to Chrome data types first // and then call the supplied WebWorkerClient. class WebWorkerImpl: public WebCore::WorkerObjectProxy, - public WebWorker { + public WebKit::WebWorker { public: - WebWorkerImpl(WebWorkerClient* client); + explicit WebWorkerImpl(WebKit::WebWorkerClient* client); virtual ~WebWorkerImpl(); - // WebCore::WorkerObjectProxy implementation. - void postMessageToWorkerObject(const WebCore::String& message); - void postExceptionToWorkerObject(const WebCore::String& errorMessage, - int lineNumber, - const WebCore::String& sourceURL); - void postConsoleMessageToWorkerObject(WebCore::MessageDestination destination, - WebCore::MessageSource source, - WebCore::MessageLevel level, - const WebCore::String& message, - int lineNumber, - const WebCore::String& sourceURL); - void confirmMessageFromWorkerObject(bool hasPendingActivity); - void reportPendingActivity(bool hasPendingActivity); - void workerContextDestroyed(); + // WebCore::WorkerObjectProxy methods: + virtual void postMessageToWorkerObject(const WebCore::String& message); + virtual void postExceptionToWorkerObject( + const WebCore::String& error_message, + int line_number, + const WebCore::String& source_url); + virtual void postConsoleMessageToWorkerObject( + WebCore::MessageDestination destination, + WebCore::MessageSource source, + WebCore::MessageLevel level, + const WebCore::String& message, + int line_number, + const WebCore::String& source_url); + virtual void confirmMessageFromWorkerObject(bool has_pending_activity); + virtual void reportPendingActivity(bool has_pending_activity); + virtual void workerContextDestroyed(); - // WebWorker implementation. - void StartWorkerContext(const GURL& script_url, - const string16& user_agent, - const string16& source_code); - void TerminateWorkerContext(); - void PostMessageToWorkerContext(const string16& message); - void WorkerObjectDestroyed(); + // WebWorker methods: + virtual void startWorkerContext(const WebKit::WebURL& script_url, + const WebKit::WebString& user_agent, + const WebKit::WebString& source_code); + virtual void terminateWorkerContext(); + virtual void postMessageToWorkerContext(const WebKit::WebString& message); + virtual void workerObjectDestroyed(); private: static void PostMessageToWorkerContextTask( @@ -60,7 +62,7 @@ class WebWorkerImpl: public WebCore::WorkerObjectProxy, WebWorkerImpl* this_ptr, const WebCore::String& message); - WebWorkerClient* client_; + WebKit::WebWorkerClient* client_; WTF::RefPtr<WebCore::WorkerThread> worker_thread_; DISALLOW_COPY_AND_ASSIGN(WebWorkerImpl); diff --git a/webkit/glue/webworkerclient.h b/webkit/glue/webworkerclient.h deleted file mode 100644 index 7938aa1..0000000 --- a/webkit/glue/webworkerclient.h +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef WEBKIT_GLUE_WEBWORKERCLIENT_H_ -#define WEBKIT_GLUE_WEBWORKERCLIENT_H_ - -#include "base/string16.h" - -// This is a version of the WebCore::WorkerObjectProxy interface that uses -// Chrome data types. -class WebWorkerClient { - public: - virtual ~WebWorkerClient() { } - - // These functions are called on the worker thread. - virtual void PostMessageToWorkerObject(const string16& message) = 0; - virtual void PostExceptionToWorkerObject( - const string16& error_message, - int line_number, - const string16& source_url) = 0; - // destination, source, and level are the int values of the corresponding - // WebKit enums. This avoids duplicating the enums and having to stay up to - // date. - virtual void PostConsoleMessageToWorkerObject( - int destination, - int source, - int level, - const string16& message, - int line_number, - const string16& source_url) = 0; - virtual void ConfirmMessageFromWorkerObject(bool has_pending_activity) = 0; - virtual void ReportPendingActivity(bool has_pending_activity) = 0; - virtual void WorkerContextDestroyed() = 0; -}; - -#endif // #ifndef WEBKIT_GLUE_WEBWORKERCLIENT_H_ diff --git a/webkit/glue/webworkerclient_impl.cc b/webkit/glue/webworkerclient_impl.cc index 68cd330..add7eeb 100644 --- a/webkit/glue/webworkerclient_impl.cc +++ b/webkit/glue/webworkerclient_impl.cc @@ -23,8 +23,15 @@ #include "webkit/glue/webframe_impl.h" #include "webkit/glue/webview_delegate.h" #include "webkit/glue/webview_impl.h" -#include "webkit/glue/webworker.h" +#include "third_party/WebKit/WebKit/chromium/public/WebConsoleMessage.h" +#include "third_party/WebKit/WebKit/chromium/public/WebScriptSource.h" +#include "third_party/WebKit/WebKit/chromium/public/WebWorker.h" +using WebKit::WebConsoleMessage; +using WebKit::WebScriptSource; +using WebKit::WebString; +using WebKit::WebWorker; +using WebKit::WebWorkerClient; // When WebKit creates a WorkerContextProxy object, we check if we're in the // renderer or worker process. If the latter, then we just use @@ -71,16 +78,17 @@ void WebWorkerClientImpl::set_webworker(WebWorker* webworker) { } void WebWorkerClientImpl::startWorkerContext( - const WebCore::KURL& scriptURL, - const WebCore::String& userAgent, - const WebCore::String& sourceCode) { + const WebCore::KURL& script_url, + const WebCore::String& user_agent, + const WebCore::String& source_code) { // Worker.terminate() could be called from JS before the context is started. if (asked_to_terminate_) return; - webworker_->StartWorkerContext(webkit_glue::KURLToGURL(scriptURL), - webkit_glue::StringToString16(userAgent), - webkit_glue::StringToString16(sourceCode)); + webworker_->startWorkerContext( + webkit_glue::KURLToWebURL(script_url), + webkit_glue::StringToWebString(user_agent), + webkit_glue::StringToWebString(source_code)); } void WebWorkerClientImpl::terminateWorkerContext() { @@ -88,7 +96,7 @@ void WebWorkerClientImpl::terminateWorkerContext() { return; asked_to_terminate_ = true; - webworker_->TerminateWorkerContext(); + webworker_->terminateWorkerContext(); } void WebWorkerClientImpl::postMessageToWorkerContext( @@ -98,8 +106,8 @@ void WebWorkerClientImpl::postMessageToWorkerContext( return; ++unconfirmed_message_count_; - webworker_->PostMessageToWorkerContext( - webkit_glue::StringToString16(message)); + webworker_->postMessageToWorkerContext( + webkit_glue::StringToWebString(message)); } bool WebWorkerClientImpl::hasPendingActivity() const { @@ -108,51 +116,52 @@ bool WebWorkerClientImpl::hasPendingActivity() const { } void WebWorkerClientImpl::workerObjectDestroyed() { - webworker_->WorkerObjectDestroyed(); + webworker_->workerObjectDestroyed(); // The lifetime of this proxy is controlled by the worker. delete this; } -void WebWorkerClientImpl::PostMessageToWorkerObject(const string16& message) { - worker_->dispatchMessage(webkit_glue::String16ToString(message)); +void WebWorkerClientImpl::postMessageToWorkerObject(const WebString& message) { + worker_->dispatchMessage(webkit_glue::WebStringToString(message)); } -void WebWorkerClientImpl::PostExceptionToWorkerObject( - const string16& error_message, +void WebWorkerClientImpl::postExceptionToWorkerObject( + const WebString& error_message, int line_number, - const string16& source_url) { + const WebString& source_url) { script_execution_context_->reportException( - webkit_glue::String16ToString(error_message), + webkit_glue::WebStringToString(error_message), line_number, - webkit_glue::String16ToString(source_url)); + webkit_glue::WebStringToString(source_url)); } -void WebWorkerClientImpl::PostConsoleMessageToWorkerObject( - int destination, - int source, - int level, - const string16& message, +void WebWorkerClientImpl::postConsoleMessageToWorkerObject( + int destination_id, + int source_id, + int message_level, + const WebString& message, int line_number, - const string16& source_url) { + const WebString& source_url) { script_execution_context_->addMessage( - static_cast<WebCore::MessageDestination>(destination), - static_cast<WebCore::MessageSource>(source), - static_cast<WebCore::MessageLevel>(level), - webkit_glue::String16ToString(message), + static_cast<WebCore::MessageDestination>(destination_id), + static_cast<WebCore::MessageSource>(source_id), + static_cast<WebCore::MessageLevel>(message_level), + webkit_glue::WebStringToString(message), line_number, - webkit_glue::String16ToString(source_url)); + webkit_glue::WebStringToString(source_url)); } -void WebWorkerClientImpl::ConfirmMessageFromWorkerObject(bool has_pending_activity) { +void WebWorkerClientImpl::confirmMessageFromWorkerObject( + bool has_pending_activity) { --unconfirmed_message_count_; } -void WebWorkerClientImpl::ReportPendingActivity(bool has_pending_activity) { +void WebWorkerClientImpl::reportPendingActivity(bool has_pending_activity) { worker_context_had_pending_activity_ = has_pending_activity; } -void WebWorkerClientImpl::WorkerContextDestroyed() { +void WebWorkerClientImpl::workerContextDestroyed() { } #endif diff --git a/webkit/glue/webworkerclient_impl.h b/webkit/glue/webworkerclient_impl.h index 5a8a4cd..847b341 100644 --- a/webkit/glue/webworkerclient_impl.h +++ b/webkit/glue/webworkerclient_impl.h @@ -7,51 +7,54 @@ #if ENABLE(WORKERS) -#include "webkit/glue/webworkerclient.h" +#include "third_party/WebKit/WebKit/chromium/public/WebWorkerClient.h" #include "WorkerContextProxy.h" #include <wtf/RefPtr.h> -class WebWorker; - namespace WebCore { class ScriptExecutionContext; -}; +} +namespace WebKit { +class WebWorker; +} // The purpose of this class is to provide a WorkerContextProxy // implementation that we can give to WebKit. Internally, it converts the // data types to Chrome compatible ones so that renderer code can use it over // IPC. class WebWorkerClientImpl : public WebCore::WorkerContextProxy, - public WebWorkerClient { + public WebKit::WebWorkerClient { public: WebWorkerClientImpl(WebCore::Worker* worker); - void set_webworker(WebWorker* webworker); + void set_webworker(WebKit::WebWorker* webworker); - // WebCore::WorkerContextProxy implementation - void startWorkerContext(const WebCore::KURL& scriptURL, - const WebCore::String& userAgent, - const WebCore::String& sourceCode); - void terminateWorkerContext(); - void postMessageToWorkerContext(const WebCore::String& message); - bool hasPendingActivity() const; - void workerObjectDestroyed(); + // WebCore::WorkerContextProxy methods: + virtual void startWorkerContext(const WebCore::KURL& script_url, + const WebCore::String& user_agent, + const WebCore::String& source_code); + virtual void terminateWorkerContext(); + virtual void postMessageToWorkerContext(const WebCore::String& message); + virtual bool hasPendingActivity() const; + virtual void workerObjectDestroyed(); - // WebWorkerClient implementation. - void PostMessageToWorkerObject(const string16& message); - void PostExceptionToWorkerObject(const string16& error_message, - int line_number, - const string16& source_url); - void PostConsoleMessageToWorkerObject(int destination, - int source, - int level, - const string16& message, - int line_number, - const string16& source_url); - void ConfirmMessageFromWorkerObject(bool has_pending_activity); - void ReportPendingActivity(bool has_pending_activity); - void WorkerContextDestroyed(); + // WebWorkerClient methods: + virtual void postMessageToWorkerObject(const WebKit::WebString& message); + virtual void postExceptionToWorkerObject( + const WebKit::WebString& error_message, + int line_number, + const WebKit::WebString& source_url); + virtual void postConsoleMessageToWorkerObject( + int destination_id, + int source_id, + int message_level, + const WebKit::WebString& message, + int line_number, + const WebKit::WebString& source_url); + virtual void confirmMessageFromWorkerObject(bool has_pending_activity); + virtual void reportPendingActivity(bool has_pending_activity); + virtual void workerContextDestroyed(); private: virtual ~WebWorkerClientImpl(); @@ -60,7 +63,7 @@ class WebWorkerClientImpl : public WebCore::WorkerContextProxy, WTF::RefPtr<WebCore::ScriptExecutionContext> script_execution_context_; WebCore::Worker* worker_; - WebWorker* webworker_; + WebKit::WebWorker* webworker_; bool asked_to_terminate_; uint32 unconfirmed_message_count_; bool worker_context_had_pending_activity_; |