| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/browser/service_worker/embedded_worker_registry.h" | 5 #include "content/browser/service_worker/embedded_worker_registry.h" |
| 6 | 6 |
| 7 #include "base/bind_helpers.h" | 7 #include "base/bind_helpers.h" |
| 8 #include "base/metrics/histogram_macros.h" | 8 #include "base/metrics/histogram_macros.h" |
| 9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
| 10 #include "content/browser/renderer_host/render_widget_helper.h" | 10 #include "content/browser/renderer_host/render_widget_helper.h" |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 } | 72 } |
| 73 | 73 |
| 74 void EmbeddedWorkerRegistry::Shutdown() { | 74 void EmbeddedWorkerRegistry::Shutdown() { |
| 75 for (WorkerInstanceMap::iterator it = worker_map_.begin(); | 75 for (WorkerInstanceMap::iterator it = worker_map_.begin(); |
| 76 it != worker_map_.end(); | 76 it != worker_map_.end(); |
| 77 ++it) { | 77 ++it) { |
| 78 it->second->Stop(); | 78 it->second->Stop(); |
| 79 } | 79 } |
| 80 } | 80 } |
| 81 | 81 |
| 82 void EmbeddedWorkerRegistry::OnWorkerReadyForInspection( | 82 bool EmbeddedWorkerRegistry::OnWorkerStarted(int process_id, |
| 83 int process_id, | 83 int embedded_worker_id) { |
| 84 int embedded_worker_id) { | 84 if (!base::ContainsKey(worker_process_map_, process_id) || |
| 85 EmbeddedWorkerInstance* worker = | 85 !base::ContainsKey(worker_process_map_[process_id], embedded_worker_id)) { |
| 86 GetWorkerForMessage(process_id, embedded_worker_id); | 86 return false; |
| 87 if (!worker) | 87 } |
| 88 return; | 88 |
| 89 worker->OnReadyForInspection(); | 89 lifetime_tracker_.StartTiming(embedded_worker_id); |
| 90 return true; |
| 90 } | 91 } |
| 91 | 92 |
| 92 void EmbeddedWorkerRegistry::OnWorkerScriptLoaded(int process_id, | 93 void EmbeddedWorkerRegistry::OnWorkerStoppedd(int process_id, |
| 93 int embedded_worker_id) { | 94 int embedded_worker_id) { |
| 94 EmbeddedWorkerInstance* worker = | |
| 95 GetWorkerForMessage(process_id, embedded_worker_id); | |
| 96 if (!worker) | |
| 97 return; | |
| 98 worker->OnScriptLoaded(); | |
| 99 } | |
| 100 | |
| 101 void EmbeddedWorkerRegistry::OnWorkerThreadStarted(int process_id, | |
| 102 int thread_id, | |
| 103 int embedded_worker_id) { | |
| 104 EmbeddedWorkerInstance* worker = | |
| 105 GetWorkerForMessage(process_id, embedded_worker_id); | |
| 106 if (!worker) | |
| 107 return; | |
| 108 worker->OnThreadStarted(thread_id); | |
| 109 } | |
| 110 | |
| 111 void EmbeddedWorkerRegistry::OnWorkerScriptLoadFailed(int process_id, | |
| 112 int embedded_worker_id) { | |
| 113 EmbeddedWorkerInstance* worker = | |
| 114 GetWorkerForMessage(process_id, embedded_worker_id); | |
| 115 if (!worker) | |
| 116 return; | |
| 117 worker->OnScriptLoadFailed(); | |
| 118 } | |
| 119 | |
| 120 void EmbeddedWorkerRegistry::OnWorkerScriptEvaluated(int process_id, | |
| 121 int embedded_worker_id, | |
| 122 bool success) { | |
| 123 EmbeddedWorkerInstance* worker = | |
| 124 GetWorkerForMessage(process_id, embedded_worker_id); | |
| 125 if (!worker) | |
| 126 return; | |
| 127 worker->OnScriptEvaluated(success); | |
| 128 } | |
| 129 | |
| 130 void EmbeddedWorkerRegistry::OnWorkerStarted( | |
| 131 int process_id, int embedded_worker_id) { | |
| 132 EmbeddedWorkerInstance* worker = | |
| 133 GetWorkerForMessage(process_id, embedded_worker_id); | |
| 134 if (!worker) | |
| 135 return; | |
| 136 | |
| 137 if (!base::ContainsKey(worker_process_map_, process_id) || | |
| 138 !base::ContainsKey(worker_process_map_[process_id], embedded_worker_id)) { | |
| 139 return; | |
| 140 } | |
| 141 | |
| 142 worker->OnStarted(); | |
| 143 lifetime_tracker_.StartTiming(embedded_worker_id); | |
| 144 } | |
| 145 | |
| 146 void EmbeddedWorkerRegistry::OnWorkerStopped( | |
| 147 int process_id, int embedded_worker_id) { | |
| 148 EmbeddedWorkerInstance* worker = | |
| 149 GetWorkerForMessage(process_id, embedded_worker_id); | |
| 150 if (!worker) | |
| 151 return; | |
| 152 worker_process_map_[process_id].erase(embedded_worker_id); | 95 worker_process_map_[process_id].erase(embedded_worker_id); |
| 153 worker->OnStopped(); | |
| 154 lifetime_tracker_.StopTiming(embedded_worker_id); | 96 lifetime_tracker_.StopTiming(embedded_worker_id); |
| 155 } | 97 } |
| 156 | 98 |
| 157 void EmbeddedWorkerRegistry::OnReportException( | |
| 158 int embedded_worker_id, | |
| 159 const base::string16& error_message, | |
| 160 int line_number, | |
| 161 int column_number, | |
| 162 const GURL& source_url) { | |
| 163 EmbeddedWorkerInstance* worker = GetWorker(embedded_worker_id); | |
| 164 if (!worker) | |
| 165 return; | |
| 166 worker->OnReportException(error_message, line_number, column_number, | |
| 167 source_url); | |
| 168 } | |
| 169 | |
| 170 void EmbeddedWorkerRegistry::OnReportConsoleMessage( | |
| 171 int embedded_worker_id, | |
| 172 int source_identifier, | |
| 173 int message_level, | |
| 174 const base::string16& message, | |
| 175 int line_number, | |
| 176 const GURL& source_url) { | |
| 177 EmbeddedWorkerInstance* worker = GetWorker(embedded_worker_id); | |
| 178 if (!worker) | |
| 179 return; | |
| 180 worker->OnReportConsoleMessage(source_identifier, message_level, message, | |
| 181 line_number, source_url); | |
| 182 } | |
| 183 | |
| 184 void EmbeddedWorkerRegistry::OnDevToolsAttached(int embedded_worker_id) { | 99 void EmbeddedWorkerRegistry::OnDevToolsAttached(int embedded_worker_id) { |
| 185 lifetime_tracker_.AbortTiming(embedded_worker_id); | 100 lifetime_tracker_.AbortTiming(embedded_worker_id); |
| 186 } | 101 } |
| 187 | 102 |
| 188 void EmbeddedWorkerRegistry::RemoveProcess(int process_id) { | 103 void EmbeddedWorkerRegistry::RemoveProcess(int process_id) { |
| 189 std::map<int, std::set<int> >::iterator found = | 104 std::map<int, std::set<int> >::iterator found = |
| 190 worker_process_map_.find(process_id); | 105 worker_process_map_.find(process_id); |
| 191 if (found != worker_process_map_.end()) { | 106 if (found != worker_process_map_.end()) { |
| 192 const std::set<int>& worker_set = worker_process_map_[process_id]; | 107 const std::set<int>& worker_set = worker_process_map_[process_id]; |
| 193 for (std::set<int>::const_iterator it = worker_set.begin(); | 108 for (std::set<int>::const_iterator it = worker_set.begin(); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 284 EmbeddedWorkerInstance* worker = GetWorker(embedded_worker_id); | 199 EmbeddedWorkerInstance* worker = GetWorker(embedded_worker_id); |
| 285 if (!worker || worker->process_id() != process_id) { | 200 if (!worker || worker->process_id() != process_id) { |
| 286 UMA_HISTOGRAM_BOOLEAN("ServiceWorker.WorkerForMessageFound", false); | 201 UMA_HISTOGRAM_BOOLEAN("ServiceWorker.WorkerForMessageFound", false); |
| 287 return nullptr; | 202 return nullptr; |
| 288 } | 203 } |
| 289 UMA_HISTOGRAM_BOOLEAN("ServiceWorker.WorkerForMessageFound", true); | 204 UMA_HISTOGRAM_BOOLEAN("ServiceWorker.WorkerForMessageFound", true); |
| 290 return worker; | 205 return worker; |
| 291 } | 206 } |
| 292 | 207 |
| 293 } // namespace content | 208 } // namespace content |
| OLD | NEW |