Commit 79b525b0 authored by horo's avatar horo Committed by Commit bot

Add skipWaiting checkbox to ServiceWorkersView in DevTools [1/2 chromium]

1/2 chromium: this cl
2/2 blink: https://codereview.chromium.org/1100403004/

screen shot: https://code.google.com/p/chromium/issues/detail?id=466871#c61

BUG=466871

Review URL: https://codereview.chromium.org/1102263002

Cr-Commit-Position: refs/heads/master@{#327227}
parent 87543be3
......@@ -170,11 +170,11 @@ void GetDevToolsRouteInfoOnIO(
}
}
Response CreateContextErrorResoponse() {
Response CreateContextErrorResponse() {
return Response::InternalError("Could not connect to the context");
}
Response CreateInvalidVersionIdErrorResoponse() {
Response CreateInvalidVersionIdErrorResponse() {
return Response::InternalError("Invalid version ID");
}
......@@ -302,7 +302,7 @@ Response ServiceWorkerHandler::Unregister(const std::string& scope_url) {
if (!enabled_)
return Response::OK();
if (!context_)
return CreateContextErrorResoponse();
return CreateContextErrorResponse();
context_->UnregisterServiceWorker(GURL(scope_url), base::Bind(&ResultNoOp));
return Response::OK();
}
......@@ -311,7 +311,7 @@ Response ServiceWorkerHandler::StartWorker(const std::string& scope_url) {
if (!enabled_)
return Response::OK();
if (!context_)
return CreateContextErrorResoponse();
return CreateContextErrorResponse();
context_->StartServiceWorker(GURL(scope_url), base::Bind(&StatusNoOp));
return Response::OK();
}
......@@ -320,10 +320,10 @@ Response ServiceWorkerHandler::StopWorker(const std::string& version_id) {
if (!enabled_)
return Response::OK();
if (!context_)
return CreateContextErrorResoponse();
return CreateContextErrorResponse();
int64 id = 0;
if (!base::StringToInt64(version_id, &id))
return CreateInvalidVersionIdErrorResoponse();
return CreateInvalidVersionIdErrorResponse();
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
base::Bind(&StopServiceWorkerOnIO, context_, id));
return Response::OK();
......@@ -334,7 +334,7 @@ Response ServiceWorkerHandler::UpdateRegistration(
if (!enabled_)
return Response::OK();
if (!context_)
return CreateContextErrorResoponse();
return CreateContextErrorResponse();
context_->UpdateRegistration(GURL(scope_url));
return Response::OK();
}
......@@ -343,11 +343,11 @@ Response ServiceWorkerHandler::InspectWorker(const std::string& version_id) {
if (!enabled_)
return Response::OK();
if (!context_)
return CreateContextErrorResoponse();
return CreateContextErrorResponse();
int64 id = 0;
if (!base::StringToInt64(version_id, &id))
return CreateInvalidVersionIdErrorResoponse();
return CreateInvalidVersionIdErrorResponse();
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::Bind(&GetDevToolsRouteInfoOnIO, context_, id,
......@@ -356,6 +356,19 @@ Response ServiceWorkerHandler::InspectWorker(const std::string& version_id) {
return Response::OK();
}
Response ServiceWorkerHandler::SkipWaiting(const std::string& version_id) {
if (!enabled_)
return Response::OK();
if (!context_)
return CreateContextErrorResponse();
int64 id = 0;
if (!base::StringToInt64(version_id, &id))
return CreateInvalidVersionIdErrorResponse();
context_->SimulateSkipWaiting(id);
return Response::OK();
}
Response ServiceWorkerHandler::SetDebugOnStart(bool debug_on_start) {
ServiceWorkerDevToolsManager::GetInstance()
->set_debug_service_worker_on_start(debug_on_start);
......@@ -369,10 +382,10 @@ Response ServiceWorkerHandler::DeliverPushMessage(
if (!enabled_)
return Response::OK();
if (!render_frame_host_)
return CreateContextErrorResoponse();
return CreateContextErrorResponse();
int64 id = 0;
if (!base::StringToInt64(registration_id, &id))
return CreateInvalidVersionIdErrorResoponse();
return CreateInvalidVersionIdErrorResponse();
BrowserContext::DeliverPushMessage(
render_frame_host_->GetProcess()->GetBrowserContext(), GURL(origin), id,
data, base::Bind(&PushDeliveryNoOp));
......
......@@ -54,6 +54,7 @@ class ServiceWorkerHandler : public DevToolsAgentHostClient,
Response StopWorker(const std::string& version_id);
Response UpdateRegistration(const std::string& scope_url);
Response InspectWorker(const std::string& version_id);
Response SkipWaiting(const std::string& version_id);
Response SetDebugOnStart(bool debug_on_start);
Response DeliverPushMessage(const std::string& origin,
const std::string& registration_id,
......
......@@ -275,6 +275,29 @@ void ServiceWorkerContextWrapper::StartServiceWorker(
pattern, base::Bind(&StartActiveWorkerOnIO, callback));
}
void ServiceWorkerContextWrapper::SimulateSkipWaiting(int64_t version_id) {
if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::Bind(&ServiceWorkerContextWrapper::SimulateSkipWaiting, this,
version_id));
return;
}
if (!context_core_.get()) {
LOG(ERROR) << "ServiceWorkerContextCore is no longer alive.";
return;
}
ServiceWorkerVersion* version = GetLiveVersion(version_id);
if (!version || version->skip_waiting())
return;
ServiceWorkerRegistration* registration =
GetLiveRegistration(version->registration_id());
if (!registration || version != registration->waiting_version())
return;
version->set_skip_waiting(true);
registration->ActivateWaitingVersionWhenReady();
}
static void DidFindRegistrationForDocument(
const net::CompletionCallback& callback,
ServiceWorkerStatusCode status,
......
......@@ -124,6 +124,7 @@ class CONTENT_EXPORT ServiceWorkerContextWrapper
void StartServiceWorker(const GURL& pattern, const StatusCallback& callback);
void UpdateRegistration(const GURL& pattern);
void SimulateSkipWaiting(int64_t version_id);
void AddObserver(ServiceWorkerContextObserver* observer);
void RemoveObserver(ServiceWorkerContextObserver* observer);
......
......@@ -295,6 +295,7 @@ class CONTENT_EXPORT ServiceWorkerVersion
bool is_redundant() const { return status_ == REDUNDANT; }
bool skip_waiting() const { return skip_waiting_; }
void set_skip_waiting(bool skip_waiting) { skip_waiting_ = skip_waiting; }
bool force_bypass_cache_for_scripts() {
return force_bypass_cache_for_scripts_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment