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

Unified Diff: content/renderer/shared_worker/embedded_shared_worker_stub.cc

Issue 223163005: Make AppCache support for SharedWorker in a renderer process. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/shared_worker/embedded_shared_worker_stub.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/shared_worker/embedded_shared_worker_stub.cc
diff --git a/content/renderer/shared_worker/embedded_shared_worker_stub.cc b/content/renderer/shared_worker/embedded_shared_worker_stub.cc
index aa3452961fcb45034e71543e4854312a29b21c90..d041478980ea6155d79a8f5db2d95503de2e2247 100644
--- a/content/renderer/shared_worker/embedded_shared_worker_stub.cc
+++ b/content/renderer/shared_worker/embedded_shared_worker_stub.cc
@@ -5,6 +5,8 @@
#include "content/renderer/shared_worker/embedded_shared_worker_stub.h"
#include "base/message_loop/message_loop_proxy.h"
+#include "content/child/appcache/appcache_dispatcher.h"
+#include "content/child/appcache/web_application_cache_host_impl.h"
#include "content/child/scoped_child_process_reference.h"
#include "content/child/shared_worker_devtools_agent.h"
#include "content/child/webmessageportchannel_impl.h"
@@ -16,6 +18,39 @@
namespace content {
+namespace {
+
+class SharedWorkerWebApplicationCacheHostImpl
+ : public WebApplicationCacheHostImpl {
+ public:
+ SharedWorkerWebApplicationCacheHostImpl(
+ blink::WebApplicationCacheHostClient* client)
+ : WebApplicationCacheHostImpl(client,
+ RenderThreadImpl::current()
+ ->appcache_dispatcher()
+ ->backend_proxy()) {}
+
+ // Main resource loading is different for workers. The main resource is
+ // loaded by the worker using WorkerScriptLoader.
+ // These overrides are stubbed out.
+ virtual void willStartMainResourceRequest(
+ blink::WebURLRequest&,
+ const blink::WebApplicationCacheHost*) {}
+ virtual void didReceiveResponseForMainResource(const blink::WebURLResponse&) {
+ }
+ virtual void didReceiveDataForMainResource(const char* data, int len) {}
+ virtual void didFinishLoadingMainResource(bool success) {}
+
+ // Cache selection is also different for workers. We know at construction
+ // time what cache to select and do so then.
+ // These overrides are stubbed out.
+ virtual void selectCacheWithoutManifest() {}
+ virtual bool selectCacheWithManifest(const blink::WebURL& manifestURL) {
+ return true;
+ }
+};
+}
+
EmbeddedSharedWorkerStub::EmbeddedSharedWorkerStub(
const GURL& url,
const base::string16& name,
@@ -89,8 +124,13 @@ void EmbeddedSharedWorkerStub::workerContextDestroyed() {
Shutdown();
}
-void EmbeddedSharedWorkerStub::selectAppCacheID(long long) {
- // TODO(horo): implement this.
+void EmbeddedSharedWorkerStub::selectAppCacheID(long long app_cache_id) {
+ if (app_cache_host_) {
+ // app_cache_host_ could become stale as it's owned by blink's
+ // DocumentLoader. This method is assumed to be called while it's valid.
+ app_cache_host_->backend()->SelectCacheForSharedWorker(
+ app_cache_host_->host_id(), app_cache_id);
+ }
}
blink::WebNotificationPresenter*
@@ -101,10 +141,10 @@ EmbeddedSharedWorkerStub::notificationPresenter() {
}
blink::WebApplicationCacheHost*
- EmbeddedSharedWorkerStub::createApplicationCacheHost(
- blink::WebApplicationCacheHostClient*) {
- // TODO(horo): implement this.
- return NULL;
+EmbeddedSharedWorkerStub::createApplicationCacheHost(
+ blink::WebApplicationCacheHostClient* client) {
+ app_cache_host_ = new SharedWorkerWebApplicationCacheHostImpl(client);
+ return app_cache_host_;
}
blink::WebWorkerPermissionClientProxy*
« no previous file with comments | « content/renderer/shared_worker/embedded_shared_worker_stub.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698