summaryrefslogtreecommitdiff
path: root/chromium/content/browser/service_worker/service_worker_client_utils.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/service_worker/service_worker_client_utils.cc')
-rw-r--r--chromium/content/browser/service_worker/service_worker_client_utils.cc25
1 files changed, 18 insertions, 7 deletions
diff --git a/chromium/content/browser/service_worker/service_worker_client_utils.cc b/chromium/content/browser/service_worker/service_worker_client_utils.cc
index 2c7c1274f2e..6f8f367ce0d 100644
--- a/chromium/content/browser/service_worker/service_worker_client_utils.cc
+++ b/chromium/content/browser/service_worker/service_worker_client_utils.cc
@@ -5,9 +5,13 @@
#include "content/browser/service_worker/service_worker_client_utils.h"
#include <algorithm>
+#include <tuple>
+#include "base/location.h"
#include "base/macros.h"
#include "base/memory/ptr_util.h"
+#include "base/single_thread_task_runner.h"
+#include "base/threading/thread_task_runner_handle.h"
#include "content/browser/frame_host/frame_tree_node.h"
#include "content/browser/frame_host/render_frame_host_impl.h"
#include "content/browser/service_worker/service_worker_context_core.h"
@@ -86,7 +90,7 @@ class OpenURLObserver : public WebContentsObserver {
BrowserThread::IO, FROM_HERE,
base::Bind(callback_, render_process_id, render_frame_id));
Observe(nullptr);
- base::MessageLoop::current()->DeleteSoon(FROM_HERE, this);
+ base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, this);
}
int frame_tree_node_id_;
@@ -149,7 +153,14 @@ ServiceWorkerClientInfo FocusOnUI(int render_process_id,
void DidOpenURLOnUI(const OpenURLCallback& callback,
WebContents* web_contents) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
- DCHECK(web_contents);
+
+ if (!web_contents) {
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(callback, ChildProcessHost::kInvalidUniqueID,
+ MSG_ROUTING_NONE));
+ return;
+ }
RenderFrameHostImpl* rfhi =
static_cast<RenderFrameHostImpl*>(web_contents->GetMainFrame());
@@ -266,11 +277,11 @@ void DidNavigate(const base::WeakPtr<ServiceWorkerContextCore>& context,
void AddWindowClient(
ServiceWorkerProviderHost* host,
- std::vector<base::Tuple<int, int, std::string>>* client_info) {
+ std::vector<std::tuple<int, int, std::string>>* client_info) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (host->client_type() != blink::WebServiceWorkerClientTypeWindow)
return;
- client_info->push_back(base::MakeTuple(host->process_id(), host->frame_id(),
+ client_info->push_back(std::make_tuple(host->process_id(), host->frame_id(),
host->client_uuid()));
}
@@ -295,7 +306,7 @@ void AddNonWindowClient(ServiceWorkerProviderHost* host,
void OnGetWindowClientsOnUI(
// The tuple contains process_id, frame_id, client_uuid.
- const std::vector<base::Tuple<int, int, std::string>>& clients_info,
+ const std::vector<std::tuple<int, int, std::string>>& clients_info,
const GURL& script_url,
const GetWindowClientsCallback& callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -303,7 +314,7 @@ void OnGetWindowClientsOnUI(
std::unique_ptr<ServiceWorkerClients> clients(new ServiceWorkerClients);
for (const auto& it : clients_info) {
ServiceWorkerClientInfo info = GetWindowClientInfoOnUI(
- base::get<0>(it), base::get<1>(it), base::get<2>(it));
+ std::get<0>(it), std::get<1>(it), std::get<2>(it));
// If the request to the provider_host returned an empty
// ServiceWorkerClientInfo, that means that it wasn't possible to associate
@@ -375,7 +386,7 @@ void GetWindowClients(const base::WeakPtr<ServiceWorkerVersion>& controller,
DCHECK(options.client_type == blink::WebServiceWorkerClientTypeWindow ||
options.client_type == blink::WebServiceWorkerClientTypeAll);
- std::vector<base::Tuple<int, int, std::string>> clients_info;
+ std::vector<std::tuple<int, int, std::string>> clients_info;
if (!options.include_uncontrolled) {
for (auto& controllee : controller->controllee_map())
AddWindowClient(controllee.second, &clients_info);