2
3 [chromium] Creation of dedicated workers (isolates) leaks reference to HTMLDocument
4 https://bugs.webkit.org/show_bug.cgi?id=105367
5
6 Reviewed by NOBODY (OOPS!).
7
8 Made WebWorkerClientImpl a subclass of WorkerMessagingProxy rather than an object wrapping
9 WorkerMessagingProxy. WorkerMessagingProxy manages its own lifetime and it is impossible to
10 properly synchronize the lifetime of WebWorkerClientImpl separately.
11
12 This allowed most of WebWorkerClientImpl to be deleted, but forced a divergence in the class
13 hierarchies of WebWorkerClientImpl and WebSharedWorkerImpl. Conversion methods were added to
14 WorkerLoaderProxy and WebWorkerBase to bridge the hierarchies of in-process and
15 out-of-process workers.
16
17 * src/DatabaseObserver.cpp:
18 (WebCore::DatabaseObserver::canEstablishDatabase):
19 Adjusted how WebWorkerBase is obtained from WorkerLoaderProxy.
20 * src/IDBFactoryBackendProxy.cpp:
21 (WebKit::AllowIndexedDBMainThreadBridge::signalCompleted):
22 Adjusted how WorkerLoaderProxy's methods are called.
23 (WebKit::IDBFactoryBackendProxy::allowIndexedDB):
24 Adjusted how WebWorkerBase is obtained from WorkerLoaderProxy.
25 * src/LocalFileSystemChromium.cpp:
26 (WebCore::openFileSystemHelper):
27 Adjusted how WebWorkerBase is obtained from WorkerLoaderProxy.
28 * src/WebSharedWorkerImpl.cpp:
29 (WebKit::WebSharedWorkerImpl::toWebWorkerBase):
30 Implemented new conversion method.
31 * src/WebSharedWorkerImpl.h:
32 (WebSharedWorkerImpl):
33 Explicitly derive from WorkerLoaderProxy now that WebWorkerBase no longer does.
34 (WebKit::WebSharedWorkerImpl::workerLoaderProxy):
35 Added new conversion method.
36 * src/WebWorkerBase.h:
37 (WebWorkerBase):
38 Removed derivation from WorkerLoaderProxy. Added method to convert to WorkerLoaderProxy.
39 * src/WebWorkerClientImpl.cpp:
40 (WebKit):
41 Adjusted comment.
42 (WebKit::WebWorkerClientImpl::createWorkerContextProxy):
43 Adjusted whitespace.
44 (WebKit::WebWorkerClientImpl::terminateWorkerContext):
45 Eliminated delegation to separate object.
46 (WebKit::WebWorkerClientImpl::toWebWorkerBase):
47 Implemented new conversion method.
48 (WebKit::WebWorkerClientImpl::view):
49 (WebKit::WebWorkerClientImpl::allowDatabase):
50 (WebKit::WebWorkerClientImpl::allowFileSystem):
51 (WebKit::WebWorkerClientImpl::openFileSystem):
52 (WebKit::WebWorkerClientImpl::allowIndexedDB):
53 Eliminated delegation to separate object.
54 (WebKit::WebWorkerClientImpl::WebWorkerClientImpl):
55 * src/WebWorkerClientImpl.h:
56 (WebKit):
57 Changed to inherit from WorkerMessagingProxy directly.
58 (WebWorkerClientImpl):
59 Deleted most methods previously overridden from WorkerContextProxy, etc.
60 * src/WorkerAsyncFileSystemChromium.cpp:
61 (WebCore::WorkerAsyncFileSystemChromium::WorkerAsyncFileSystemChromium):
62 (WebCore::WorkerAsyncFileSystemChromium::createWorkerFileSystemCallbacksBridge):
63 Hold on to, and use, WorkerLoaderProxy rather than WebWorkerBase.
64 * src/WorkerAsyncFileSystemChromium.h:
65 (WebKit):
66 (WebCore):
67 (WorkerAsyncFileSystemChromium):
68 Hold on to WorkerLoaderProxy rather than WebWorkerBase.
69