service_worker_client.cc 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // Copyright 2020 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/performance_manager/service_worker_client.h"
  5. ServiceWorkerClient::ServiceWorkerClient(
  6. content::GlobalRenderFrameHostId render_frame_host_id)
  7. : type_(blink::mojom::ServiceWorkerClientType::kWindow),
  8. render_frame_host_id_(render_frame_host_id) {}
  9. ServiceWorkerClient::ServiceWorkerClient(
  10. blink::DedicatedWorkerToken dedicated_worker_token)
  11. : type_(blink::mojom::ServiceWorkerClientType::kDedicatedWorker),
  12. worker_token_(dedicated_worker_token) {}
  13. ServiceWorkerClient::ServiceWorkerClient(
  14. blink::SharedWorkerToken shared_worker_token)
  15. : type_(blink::mojom::ServiceWorkerClientType::kSharedWorker),
  16. worker_token_(shared_worker_token) {}
  17. ServiceWorkerClient::ServiceWorkerClient(const ServiceWorkerClient& other) =
  18. default;
  19. ServiceWorkerClient& ServiceWorkerClient::operator=(
  20. const ServiceWorkerClient& other) = default;
  21. ServiceWorkerClient::~ServiceWorkerClient() = default;
  22. content::GlobalRenderFrameHostId ServiceWorkerClient::GetRenderFrameHostId()
  23. const {
  24. DCHECK_EQ(type_, blink::mojom::ServiceWorkerClientType::kWindow);
  25. return render_frame_host_id_;
  26. }
  27. blink::DedicatedWorkerToken ServiceWorkerClient::GetDedicatedWorkerToken()
  28. const {
  29. DCHECK_EQ(type_, blink::mojom::ServiceWorkerClientType::kDedicatedWorker);
  30. return worker_token_.GetAs<blink::DedicatedWorkerToken>();
  31. }
  32. blink::SharedWorkerToken ServiceWorkerClient::GetSharedWorkerToken() const {
  33. DCHECK_EQ(type_, blink::mojom::ServiceWorkerClientType::kSharedWorker);
  34. return worker_token_.GetAs<blink::SharedWorkerToken>();
  35. }
  36. bool ServiceWorkerClient::operator<(const ServiceWorkerClient& o) const {
  37. if (type() == o.type()) {
  38. switch (type()) {
  39. case blink::mojom::ServiceWorkerClientType::kWindow:
  40. return GetRenderFrameHostId() < o.GetRenderFrameHostId();
  41. case blink::mojom::ServiceWorkerClientType::kDedicatedWorker:
  42. return GetDedicatedWorkerToken() < o.GetDedicatedWorkerToken();
  43. case blink::mojom::ServiceWorkerClientType::kSharedWorker:
  44. return GetSharedWorkerToken() < o.GetSharedWorkerToken();
  45. case blink::mojom::ServiceWorkerClientType::kAll:
  46. NOTREACHED();
  47. return false;
  48. }
  49. }
  50. return type() < o.type();
  51. }