summaryrefslogtreecommitdiffstats
path: root/chrome/worker
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-04 02:00:56 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-04 02:00:56 +0000
commita5da6d613f41ecf35c027e8744dd6d3a41e4010c (patch)
treedad6a3e159fcc21df62180f481a0024db97d5b0d /chrome/worker
parente23ed5427d0892d07480781f45b4367adebc0c00 (diff)
downloadchromium_src-a5da6d613f41ecf35c027e8744dd6d3a41e4010c.zip
chromium_src-a5da6d613f41ecf35c027e8744dd6d3a41e4010c.tar.gz
chromium_src-a5da6d613f41ecf35c027e8744dd6d3a41e4010c.tar.bz2
Cross-process Message Port implementation.
I'm sending this first, then I'll add support to workers in another changelist to avoid making this change larger. TEST=running message port related layout tests in ui_tests Review URL: http://codereview.chromium.org/159372 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22356 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/worker')
-rw-r--r--chrome/worker/worker_uitest.cc29
-rw-r--r--chrome/worker/worker_webkitclient_impl.cc6
-rw-r--r--chrome/worker/worker_webkitclient_impl.h1
3 files changed, 36 insertions, 0 deletions
diff --git a/chrome/worker/worker_uitest.cc b/chrome/worker/worker_uitest.cc
index e493203..62c618c 100644
--- a/chrome/worker/worker_uitest.cc
+++ b/chrome/worker/worker_uitest.cc
@@ -374,6 +374,35 @@ TEST_F(WorkerTest, WorkerXhrHttpLayoutTests) {
StopHttpServer();
}
+TEST_F(WorkerTest, MessagePorts) {
+ static const char* kLayoutTestFiles[] = {
+ "message-channel-gc.html",
+ "message-channel-gc-2.html",
+ "message-channel-gc-3.html",
+ "message-channel-gc-4.html",
+ "message-port.html",
+ "message-port-clone.html",
+ "message-port-constructor-for-deleted-document.html",
+ "message-port-deleted-document.html",
+ "message-port-deleted-frame.html",
+ "message-port-inactive-document.html",
+ "message-port-no-wrapper.html",
+ // Only works with run-webkit-tests --leaks.
+ //"message-channel-listener-circular-ownership.html",
+ };
+
+ FilePath fast_test_dir;
+ fast_test_dir = fast_test_dir.AppendASCII("LayoutTests");
+ fast_test_dir = fast_test_dir.AppendASCII("fast");
+
+ FilePath worker_test_dir;
+ worker_test_dir = worker_test_dir.AppendASCII("events");
+ InitializeForLayoutTest(fast_test_dir, worker_test_dir, false);
+
+ for (size_t i = 0; i < arraysize(kLayoutTestFiles); ++i)
+ RunLayoutTest(kLayoutTestFiles[i], false);
+}
+
TEST_F(WorkerTest, LimitPerPage) {
int max_workers_per_tab = WorkerService::kMaxWorkersPerTabWhenSeparate;
GURL url = GetTestUrl(L"workers", L"many_workers.html");
diff --git a/chrome/worker/worker_webkitclient_impl.cc b/chrome/worker/worker_webkitclient_impl.cc
index 21ca49a..4923542 100644
--- a/chrome/worker/worker_webkitclient_impl.cc
+++ b/chrome/worker/worker_webkitclient_impl.cc
@@ -5,6 +5,7 @@
#include "chrome/worker/worker_webkitclient_impl.h"
#include "base/logging.h"
+#include "chrome/common/webmessageportchannel_impl.h"
#include "chrome/worker/worker_thread.h"
#include "webkit/api/public/WebString.h"
#include "webkit/api/public/WebURL.h"
@@ -36,6 +37,11 @@ bool WorkerWebKitClientImpl::isLinkVisited(unsigned long long link_hash) {
return false;
}
+WebKit::WebMessagePortChannel*
+WorkerWebKitClientImpl::createMessagePortChannel() {
+ return new WebMessagePortChannelImpl();
+}
+
void WorkerWebKitClientImpl::setCookies(const WebKit::WebURL& url,
const WebKit::WebURL& policy_url,
const WebKit::WebString& value) {
diff --git a/chrome/worker/worker_webkitclient_impl.h b/chrome/worker/worker_webkitclient_impl.h
index ecd3220..69a28e4 100644
--- a/chrome/worker/worker_webkitclient_impl.h
+++ b/chrome/worker/worker_webkitclient_impl.h
@@ -16,6 +16,7 @@ class WorkerWebKitClientImpl : public webkit_glue::WebKitClientImpl {
virtual unsigned long long visitedLinkHash(const char* canonicalURL,
size_t length);
virtual bool isLinkVisited(unsigned long long linkHash);
+ virtual WebKit::WebMessagePortChannel* createMessagePortChannel();
virtual void setCookies(const WebKit::WebURL& url,
const WebKit::WebURL& policy_url,
const WebKit::WebString& value);