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

Side by Side Diff: webkit/glue/webworkerclient_impl.cc

Issue 200054: Hook up WebFrameClient, replacing many WebViewDelegate methods.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/glue/webworker_impl.cc ('k') | webkit/tools/test_shell/layout_test_controller.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 6
7 #if ENABLE(WORKERS) 7 #if ENABLE(WORKERS)
8 8
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 10
11 #include "DedicatedWorkerThread.h" 11 #include "DedicatedWorkerThread.h"
12 #include "Frame.h" 12 #include "Frame.h"
13 #include "FrameLoaderClient.h" 13 #include "FrameLoaderClient.h"
14 #include "GenericWorkerTask.h" 14 #include "GenericWorkerTask.h"
15 #include "MessagePort.h" 15 #include "MessagePort.h"
16 #include "MessagePortChannel.h" 16 #include "MessagePortChannel.h"
17 #include "ScriptExecutionContext.h" 17 #include "ScriptExecutionContext.h"
18 #include "WorkerContextExecutionProxy.h" 18 #include "WorkerContextExecutionProxy.h"
19 #include "WorkerMessagingProxy.h" 19 #include "WorkerMessagingProxy.h"
20 #include "Worker.h" 20 #include "Worker.h"
21 #include "WorkerContext.h" 21 #include "WorkerContext.h"
22 #include <wtf/Threading.h> 22 #include <wtf/Threading.h>
23 23
24 #undef LOG 24 #undef LOG
25 25
26 #include "webkit/glue/webworkerclient_impl.h" 26 #include "webkit/glue/webworkerclient_impl.h"
27 27
28 #include "base/command_line.h" 28 #include "base/command_line.h"
29 #include "webkit/api/public/WebFrameClient.h"
29 #include "webkit/api/public/WebKit.h" 30 #include "webkit/api/public/WebKit.h"
30 #include "webkit/api/public/WebKitClient.h" 31 #include "webkit/api/public/WebKitClient.h"
31 #include "webkit/api/public/WebMessagePortChannel.h" 32 #include "webkit/api/public/WebMessagePortChannel.h"
32 #include "webkit/api/public/WebString.h" 33 #include "webkit/api/public/WebString.h"
33 #include "webkit/api/public/WebURL.h" 34 #include "webkit/api/public/WebURL.h"
34 #include "webkit/api/public/WebWorker.h" 35 #include "webkit/api/public/WebWorker.h"
35 #include "webkit/api/src/PlatformMessagePortChannel.h" 36 #include "webkit/api/src/PlatformMessagePortChannel.h"
36 #include "webkit/glue/glue_util.h" 37 #include "webkit/glue/glue_util.h"
37 #include "webkit/glue/webframeloaderclient_impl.h" 38 #include "webkit/glue/webframeloaderclient_impl.h"
38 #include "webkit/glue/webframe_impl.h" 39 #include "webkit/glue/webframe_impl.h"
39 #include "webkit/glue/webview_delegate.h" 40 #include "webkit/glue/webview_delegate.h"
40 #include "webkit/glue/webview_impl.h" 41 #include "webkit/glue/webview_impl.h"
41 #include "webkit/glue/webworker_impl.h" 42 #include "webkit/glue/webworker_impl.h"
42 43
44 using WebKit::WebFrameClient;
43 using WebKit::WebMessagePortChannel; 45 using WebKit::WebMessagePortChannel;
44 using WebKit::WebMessagePortChannelArray; 46 using WebKit::WebMessagePortChannelArray;
45 using WebKit::WebString; 47 using WebKit::WebString;
46 using WebKit::WebWorker; 48 using WebKit::WebWorker;
47 using WebKit::WebWorkerClient; 49 using WebKit::WebWorkerClient;
48 50
49 // When WebKit creates a WorkerContextProxy object, we check if we're in the 51 // When WebKit creates a WorkerContextProxy object, we check if we're in the
50 // renderer or worker process. If the latter, then we just use 52 // renderer or worker process. If the latter, then we just use
51 // WebCore::WorkerMessagingProxy. 53 // WebCore::WorkerMessagingProxy.
52 // 54 //
53 // If we're in the renderer process, then we need use the glue provided 55 // If we're in the renderer process, then we need use the glue provided
54 // WebWorker object to talk to the worker process over IPC. The worker process 56 // WebWorker object to talk to the worker process over IPC. The worker process
55 // talks to WebCore::Worker* using WorkerObjectProxy, which we implement on 57 // talks to WebCore::Worker* using WorkerObjectProxy, which we implement on
56 // WebWorkerClientImpl. 58 // WebWorkerClientImpl.
57 // 59 //
58 // Note that if we're running each worker in a separate process, then nested 60 // Note that if we're running each worker in a separate process, then nested
59 // workers end up using the same codepath as the renderer process. 61 // workers end up using the same codepath as the renderer process.
60 WebCore::WorkerContextProxy* WebCore::WorkerContextProxy::create( 62 WebCore::WorkerContextProxy* WebCore::WorkerContextProxy::create(
61 WebCore::Worker* worker) { 63 WebCore::Worker* worker) {
62 if (!worker->scriptExecutionContext()->isDocument() && 64 if (!worker->scriptExecutionContext()->isDocument() &&
63 CommandLine::ForCurrentProcess()->HasSwitch( 65 CommandLine::ForCurrentProcess()->HasSwitch(
64 L"web-worker-share-processes")) { 66 L"web-worker-share-processes")) {
65 return new WebCore::WorkerMessagingProxy(worker); 67 return new WebCore::WorkerMessagingProxy(worker);
66 } 68 }
67 69
68 WebWorker* webworker = NULL; 70 WebWorker* webworker = NULL;
69 WebWorkerClientImpl* proxy = new WebWorkerClientImpl(worker); 71 WebWorkerClientImpl* proxy = new WebWorkerClientImpl(worker);
70 72
71 if (worker->scriptExecutionContext()->isDocument()) { 73 if (worker->scriptExecutionContext()->isDocument()) {
72 // Get to the RenderView, so that we can tell the browser to create a
73 // worker process if necessary.
74 WebCore::Document* document = static_cast<WebCore::Document*>( 74 WebCore::Document* document = static_cast<WebCore::Document*>(
75 worker->scriptExecutionContext()); 75 worker->scriptExecutionContext());
76 WebFrameLoaderClient* frame_loader_client = 76 WebFrameImpl* webframe = WebFrameImpl::FromFrame(document->frame());
77 static_cast<WebFrameLoaderClient*>( 77 webworker = webframe->client()->createWorker(webframe, proxy);
78 document->frame()->loader()->client());
79 WebViewDelegate* webview_delegate =
80 frame_loader_client->webframe()->GetWebViewImpl()->delegate();
81 webworker = webview_delegate->CreateWebWorker(proxy);
82 } else { 78 } else {
83 WebCore::WorkerContextExecutionProxy* current_context = 79 WebCore::WorkerContextExecutionProxy* current_context =
84 WebCore::WorkerContextExecutionProxy::retrieve(); 80 WebCore::WorkerContextExecutionProxy::retrieve();
85 if (!current_context) { 81 if (!current_context) {
86 NOTREACHED(); 82 NOTREACHED();
87 return NULL; 83 return NULL;
88 } 84 }
89 85
90 WebCore::DedicatedWorkerThread* thread = 86 WebCore::DedicatedWorkerThread* thread =
91 static_cast<WebCore::DedicatedWorkerThread*>( 87 static_cast<WebCore::DedicatedWorkerThread*>(
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 } 392 }
397 393
398 void WebWorkerClientImpl::ReportPendingActivityTask( 394 void WebWorkerClientImpl::ReportPendingActivityTask(
399 WebCore::ScriptExecutionContext* context, 395 WebCore::ScriptExecutionContext* context,
400 WebWorkerClientImpl* this_ptr, 396 WebWorkerClientImpl* this_ptr,
401 bool has_pending_activity) { 397 bool has_pending_activity) {
402 this_ptr->worker_context_had_pending_activity_ = has_pending_activity; 398 this_ptr->worker_context_had_pending_activity_ = has_pending_activity;
403 } 399 }
404 400
405 #endif 401 #endif
OLDNEW
« no previous file with comments | « webkit/glue/webworker_impl.cc ('k') | webkit/tools/test_shell/layout_test_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698