diff options
Diffstat (limited to 'webkit/glue/webworkerclient_impl.h')
-rw-r--r-- | webkit/glue/webworkerclient_impl.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/webkit/glue/webworkerclient_impl.h b/webkit/glue/webworkerclient_impl.h new file mode 100644 index 0000000..fc93a3c --- /dev/null +++ b/webkit/glue/webworkerclient_impl.h @@ -0,0 +1,61 @@ +// 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_IMPL_H_ +#define WEBKIT_GLUE_WEBWORKERCLIENT_IMPL_H_ + +#if ENABLE(WORKERS) + +#include "base/scoped_ptr.h" +#include "webkit/glue/webworkerclient.h" + +#include "WorkerContextProxy.h" + +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: + WebWorkerClientImpl(WebCore::Worker* worker); + + void set_webworker(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(); + + // 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(); + + private: + virtual ~WebWorkerClientImpl(); + + WebCore::Worker* worker_; + scoped_ptr<WebWorker> webworker_; +}; + +#endif + +#endif // WEBKIT_GLUE_WEBWORKERCLIENT_IMPL_H_ |