OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/service_worker_internals_ui.h" | 5 #include "content/browser/service_worker/service_worker_internals_ui.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 15 matching lines...) Expand all Loading... |
26 #include "content/public/browser/browser_thread.h" | 26 #include "content/public/browser/browser_thread.h" |
27 #include "content/public/browser/render_process_host.h" | 27 #include "content/public/browser/render_process_host.h" |
28 #include "content/public/browser/storage_partition.h" | 28 #include "content/public/browser/storage_partition.h" |
29 #include "content/public/browser/web_contents.h" | 29 #include "content/public/browser/web_contents.h" |
30 #include "content/public/browser/web_ui.h" | 30 #include "content/public/browser/web_ui.h" |
31 #include "content/public/browser/web_ui_data_source.h" | 31 #include "content/public/browser/web_ui_data_source.h" |
32 #include "content/public/common/child_process_host.h" | 32 #include "content/public/common/child_process_host.h" |
33 #include "content/public/common/url_constants.h" | 33 #include "content/public/common/url_constants.h" |
34 | 34 |
35 using base::DictionaryValue; | 35 using base::DictionaryValue; |
36 using base::FundamentalValue; | 36 using base::Value; |
37 using base::ListValue; | 37 using base::ListValue; |
38 using base::StringValue; | 38 using base::StringValue; |
39 using base::Value; | 39 using base::Value; |
40 using base::WeakPtr; | 40 using base::WeakPtr; |
41 | 41 |
42 namespace content { | 42 namespace content { |
43 | 43 |
44 namespace { | 44 namespace { |
45 | 45 |
46 using GetRegistrationsCallback = | 46 using GetRegistrationsCallback = |
47 base::Callback<void(const std::vector<ServiceWorkerRegistrationInfo>&, | 47 base::Callback<void(const std::vector<ServiceWorkerRegistrationInfo>&, |
48 const std::vector<ServiceWorkerVersionInfo>&, | 48 const std::vector<ServiceWorkerVersionInfo>&, |
49 const std::vector<ServiceWorkerRegistrationInfo>&)>; | 49 const std::vector<ServiceWorkerRegistrationInfo>&)>; |
50 | 50 |
51 void OperationCompleteCallback(WeakPtr<ServiceWorkerInternalsUI> internals, | 51 void OperationCompleteCallback(WeakPtr<ServiceWorkerInternalsUI> internals, |
52 int callback_id, | 52 int callback_id, |
53 ServiceWorkerStatusCode status) { | 53 ServiceWorkerStatusCode status) { |
54 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { | 54 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { |
55 BrowserThread::PostTask( | 55 BrowserThread::PostTask( |
56 BrowserThread::UI, | 56 BrowserThread::UI, |
57 FROM_HERE, | 57 FROM_HERE, |
58 base::Bind(OperationCompleteCallback, internals, callback_id, status)); | 58 base::Bind(OperationCompleteCallback, internals, callback_id, status)); |
59 return; | 59 return; |
60 } | 60 } |
61 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 61 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
62 if (internals) { | 62 if (internals) { |
63 internals->web_ui()->CallJavascriptFunctionUnsafe( | 63 internals->web_ui()->CallJavascriptFunctionUnsafe( |
64 "serviceworker.onOperationComplete", | 64 "serviceworker.onOperationComplete", Value(static_cast<int>(status)), |
65 FundamentalValue(static_cast<int>(status)), | 65 Value(callback_id)); |
66 FundamentalValue(callback_id)); | |
67 } | 66 } |
68 } | 67 } |
69 | 68 |
70 void CallServiceWorkerVersionMethodWithVersionID( | 69 void CallServiceWorkerVersionMethodWithVersionID( |
71 ServiceWorkerInternalsUI::ServiceWorkerVersionMethod method, | 70 ServiceWorkerInternalsUI::ServiceWorkerVersionMethod method, |
72 scoped_refptr<ServiceWorkerContextWrapper> context, | 71 scoped_refptr<ServiceWorkerContextWrapper> context, |
73 int64_t version_id, | 72 int64_t version_id, |
74 const ServiceWorkerInternalsUI::StatusCallback& callback) { | 73 const ServiceWorkerInternalsUI::StatusCallback& callback) { |
75 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { | 74 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { |
76 BrowserThread::PostTask( | 75 BrowserThread::PostTask( |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 const std::vector<ServiceWorkerVersionInfo>& live_versions, | 244 const std::vector<ServiceWorkerVersionInfo>& live_versions, |
246 const std::vector<ServiceWorkerRegistrationInfo>& stored_registrations) { | 245 const std::vector<ServiceWorkerRegistrationInfo>& stored_registrations) { |
247 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 246 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
248 if (!internals) | 247 if (!internals) |
249 return; | 248 return; |
250 | 249 |
251 ScopedVector<const Value> args; | 250 ScopedVector<const Value> args; |
252 args.push_back(GetRegistrationListValue(live_registrations)); | 251 args.push_back(GetRegistrationListValue(live_registrations)); |
253 args.push_back(GetVersionListValue(live_versions)); | 252 args.push_back(GetVersionListValue(live_versions)); |
254 args.push_back(GetRegistrationListValue(stored_registrations)); | 253 args.push_back(GetRegistrationListValue(stored_registrations)); |
255 args.push_back(new FundamentalValue(partition_id)); | 254 args.push_back(new Value(partition_id)); |
256 args.push_back(new StringValue(context_path.value())); | 255 args.push_back(new StringValue(context_path.value())); |
257 internals->web_ui()->CallJavascriptFunctionUnsafe( | 256 internals->web_ui()->CallJavascriptFunctionUnsafe( |
258 "serviceworker.onPartitionData", args.get()); | 257 "serviceworker.onPartitionData", args.get()); |
259 } | 258 } |
260 | 259 |
261 } // namespace | 260 } // namespace |
262 | 261 |
263 class ServiceWorkerInternalsUI::PartitionObserver | 262 class ServiceWorkerInternalsUI::PartitionObserver |
264 : public ServiceWorkerContextObserver { | 263 : public ServiceWorkerContextObserver { |
265 public: | 264 public: |
266 PartitionObserver(int partition_id, WebUI* web_ui) | 265 PartitionObserver(int partition_id, WebUI* web_ui) |
267 : partition_id_(partition_id), web_ui_(web_ui) {} | 266 : partition_id_(partition_id), web_ui_(web_ui) {} |
268 ~PartitionObserver() override {} | 267 ~PartitionObserver() override {} |
269 // ServiceWorkerContextObserver overrides: | 268 // ServiceWorkerContextObserver overrides: |
270 void OnRunningStateChanged(int64_t version_id, | 269 void OnRunningStateChanged(int64_t version_id, |
271 EmbeddedWorkerStatus) override { | 270 EmbeddedWorkerStatus) override { |
272 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 271 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
273 web_ui_->CallJavascriptFunctionUnsafe( | 272 web_ui_->CallJavascriptFunctionUnsafe( |
274 "serviceworker.onRunningStateChanged", FundamentalValue(partition_id_), | 273 "serviceworker.onRunningStateChanged", Value(partition_id_), |
275 StringValue(base::Int64ToString(version_id))); | 274 StringValue(base::Int64ToString(version_id))); |
276 } | 275 } |
277 void OnVersionStateChanged(int64_t version_id, | 276 void OnVersionStateChanged(int64_t version_id, |
278 ServiceWorkerVersion::Status) override { | 277 ServiceWorkerVersion::Status) override { |
279 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 278 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
280 web_ui_->CallJavascriptFunctionUnsafe( | 279 web_ui_->CallJavascriptFunctionUnsafe( |
281 "serviceworker.onVersionStateChanged", FundamentalValue(partition_id_), | 280 "serviceworker.onVersionStateChanged", Value(partition_id_), |
282 StringValue(base::Int64ToString(version_id))); | 281 StringValue(base::Int64ToString(version_id))); |
283 } | 282 } |
284 void OnErrorReported(int64_t version_id, | 283 void OnErrorReported(int64_t version_id, |
285 int process_id, | 284 int process_id, |
286 int thread_id, | 285 int thread_id, |
287 const ErrorInfo& info) override { | 286 const ErrorInfo& info) override { |
288 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 287 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
289 ScopedVector<const Value> args; | 288 ScopedVector<const Value> args; |
290 args.push_back(new FundamentalValue(partition_id_)); | 289 args.push_back(new Value(partition_id_)); |
291 args.push_back(new StringValue(base::Int64ToString(version_id))); | 290 args.push_back(new StringValue(base::Int64ToString(version_id))); |
292 args.push_back(new FundamentalValue(process_id)); | 291 args.push_back(new Value(process_id)); |
293 args.push_back(new FundamentalValue(thread_id)); | 292 args.push_back(new Value(thread_id)); |
294 std::unique_ptr<DictionaryValue> value(new DictionaryValue()); | 293 std::unique_ptr<DictionaryValue> value(new DictionaryValue()); |
295 value->SetString("message", info.error_message); | 294 value->SetString("message", info.error_message); |
296 value->SetInteger("lineNumber", info.line_number); | 295 value->SetInteger("lineNumber", info.line_number); |
297 value->SetInteger("columnNumber", info.column_number); | 296 value->SetInteger("columnNumber", info.column_number); |
298 value->SetString("sourceURL", info.source_url.spec()); | 297 value->SetString("sourceURL", info.source_url.spec()); |
299 args.push_back(value.release()); | 298 args.push_back(value.release()); |
300 web_ui_->CallJavascriptFunctionUnsafe("serviceworker.onErrorReported", | 299 web_ui_->CallJavascriptFunctionUnsafe("serviceworker.onErrorReported", |
301 args.get()); | 300 args.get()); |
302 } | 301 } |
303 void OnReportConsoleMessage(int64_t version_id, | 302 void OnReportConsoleMessage(int64_t version_id, |
304 int process_id, | 303 int process_id, |
305 int thread_id, | 304 int thread_id, |
306 const ConsoleMessage& message) override { | 305 const ConsoleMessage& message) override { |
307 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 306 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
308 ScopedVector<const Value> args; | 307 ScopedVector<const Value> args; |
309 args.push_back(new FundamentalValue(partition_id_)); | 308 args.push_back(new Value(partition_id_)); |
310 args.push_back(new StringValue(base::Int64ToString(version_id))); | 309 args.push_back(new StringValue(base::Int64ToString(version_id))); |
311 args.push_back(new FundamentalValue(process_id)); | 310 args.push_back(new Value(process_id)); |
312 args.push_back(new FundamentalValue(thread_id)); | 311 args.push_back(new Value(thread_id)); |
313 std::unique_ptr<DictionaryValue> value(new DictionaryValue()); | 312 std::unique_ptr<DictionaryValue> value(new DictionaryValue()); |
314 value->SetInteger("sourceIdentifier", message.source_identifier); | 313 value->SetInteger("sourceIdentifier", message.source_identifier); |
315 value->SetInteger("message_level", message.message_level); | 314 value->SetInteger("message_level", message.message_level); |
316 value->SetString("message", message.message); | 315 value->SetString("message", message.message); |
317 value->SetInteger("lineNumber", message.line_number); | 316 value->SetInteger("lineNumber", message.line_number); |
318 value->SetString("sourceURL", message.source_url.spec()); | 317 value->SetString("sourceURL", message.source_url.spec()); |
319 args.push_back(value.release()); | 318 args.push_back(value.release()); |
320 web_ui_->CallJavascriptFunctionUnsafe( | 319 web_ui_->CallJavascriptFunctionUnsafe( |
321 "serviceworker.onConsoleMessageReported", args.get()); | 320 "serviceworker.onConsoleMessageReported", args.get()); |
322 } | 321 } |
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
602 callback.Run(SERVICE_WORKER_ERROR_ABORT); | 601 callback.Run(SERVICE_WORKER_ERROR_ABORT); |
603 return; | 602 return; |
604 } | 603 } |
605 | 604 |
606 // ServiceWorkerContextWrapper::UnregisterServiceWorker doesn't work here | 605 // ServiceWorkerContextWrapper::UnregisterServiceWorker doesn't work here |
607 // because that reduces a status code to boolean. | 606 // because that reduces a status code to boolean. |
608 context->context()->UnregisterServiceWorker(scope, callback); | 607 context->context()->UnregisterServiceWorker(scope, callback); |
609 } | 608 } |
610 | 609 |
611 } // namespace content | 610 } // namespace content |
OLD | NEW |