Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(362)

Side by Side Diff: content/renderer/presentation/presentation_dispatcher.h

Issue 2327993002: [PresentationAPI] Use KURL and WebURL in place of string types. (Closed)
Patch Set: Rebase. Fix PresentationReceiverTest Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 #ifndef CONTENT_RENDERER_PRESENTATION_PRESENTATION_DISPATCHER_H_ 5 #ifndef CONTENT_RENDERER_PRESENTATION_PRESENTATION_DISPATCHER_H_
6 #define CONTENT_RENDERER_PRESENTATION_PRESENTATION_DISPATCHER_H_ 6 #define CONTENT_RENDERER_PRESENTATION_PRESENTATION_DISPATCHER_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
11 #include <map> 11 #include <map>
12 #include <memory> 12 #include <memory>
13 #include <queue> 13 #include <queue>
14 14
15 #include "base/compiler_specific.h" 15 #include "base/compiler_specific.h"
16 #include "base/id_map.h" 16 #include "base/id_map.h"
17 #include "base/macros.h" 17 #include "base/macros.h"
18 #include "content/common/content_export.h" 18 #include "content/common/content_export.h"
19 #include "content/public/renderer/render_frame_observer.h" 19 #include "content/public/renderer/render_frame_observer.h"
20 #include "mojo/public/cpp/bindings/binding.h" 20 #include "mojo/public/cpp/bindings/binding.h"
21 #include "third_party/WebKit/public/platform/modules/presentation/WebPresentatio nClient.h" 21 #include "third_party/WebKit/public/platform/modules/presentation/WebPresentatio nClient.h"
22 #include "third_party/WebKit/public/platform/modules/presentation/presentation.m ojom.h" 22 #include "third_party/WebKit/public/platform/modules/presentation/presentation.m ojom.h"
23 #include "url/gurl.h"
23 24
24 namespace blink { 25 namespace blink {
25 class WebPresentationAvailabilityObserver; 26 class WebPresentationAvailabilityObserver;
26 class WebString; 27 class WebString;
28 class WebURL;
27 template <typename T> 29 template <typename T>
28 class WebVector; 30 class WebVector;
29 } // namespace blink 31 } // namespace blink
30 32
31 namespace content { 33 namespace content {
32 34
33 // PresentationDispatcher is a delegate for Presentation API messages used by 35 // PresentationDispatcher is a delegate for Presentation API messages used by
34 // Blink. It forwards the calls to the Mojo PresentationService. 36 // Blink. It forwards the calls to the Mojo PresentationService.
35 class CONTENT_EXPORT PresentationDispatcher 37 class CONTENT_EXPORT PresentationDispatcher
36 : public RenderFrameObserver, 38 : public RenderFrameObserver,
37 public NON_EXPORTED_BASE(blink::WebPresentationClient), 39 public NON_EXPORTED_BASE(blink::WebPresentationClient),
38 public NON_EXPORTED_BASE(blink::mojom::PresentationServiceClient) { 40 public NON_EXPORTED_BASE(blink::mojom::PresentationServiceClient) {
39 public: 41 public:
40 explicit PresentationDispatcher(RenderFrame* render_frame); 42 explicit PresentationDispatcher(RenderFrame* render_frame);
41 ~PresentationDispatcher() override; 43 ~PresentationDispatcher() override;
42 44
43 private: 45 private:
44 struct SendMessageRequest { 46 struct SendMessageRequest {
45 SendMessageRequest(blink::mojom::PresentationSessionInfoPtr session_info, 47 SendMessageRequest(blink::mojom::PresentationSessionInfoPtr session_info,
46 blink::mojom::SessionMessagePtr message); 48 blink::mojom::SessionMessagePtr message);
47 ~SendMessageRequest(); 49 ~SendMessageRequest();
48 50
49 blink::mojom::PresentationSessionInfoPtr session_info; 51 blink::mojom::PresentationSessionInfoPtr session_info;
50 blink::mojom::SessionMessagePtr message; 52 blink::mojom::SessionMessagePtr message;
51 }; 53 };
52 54
53 static SendMessageRequest* CreateSendTextMessageRequest( 55 static SendMessageRequest* CreateSendTextMessageRequest(
54 const blink::WebString& presentationUrl, 56 const blink::WebURL& presentationUrl,
55 const blink::WebString& presentationId, 57 const blink::WebString& presentationId,
56 const blink::WebString& message); 58 const blink::WebString& message);
57 static SendMessageRequest* CreateSendBinaryMessageRequest( 59 static SendMessageRequest* CreateSendBinaryMessageRequest(
58 const blink::WebString& presentationUrl, 60 const blink::WebURL& presentationUrl,
59 const blink::WebString& presentationId, 61 const blink::WebString& presentationId,
60 blink::mojom::PresentationMessageType type, 62 blink::mojom::PresentationMessageType type,
61 const uint8_t* data, 63 const uint8_t* data,
62 size_t length); 64 size_t length);
63 65
64 // WebPresentationClient implementation. 66 // WebPresentationClient implementation.
65 void setController(blink::WebPresentationController* controller) override; 67 void setController(blink::WebPresentationController* controller) override;
66 void startSession( 68 void startSession(
67 const blink::WebVector<blink::WebString>& presentationUrls, 69 const blink::WebVector<blink::WebURL>& presentationUrls,
68 blink::WebPresentationConnectionClientCallbacks* callback) override; 70 blink::WebPresentationConnectionClientCallbacks* callback) override;
69 void joinSession( 71 void joinSession(
70 const blink::WebVector<blink::WebString>& presentationUrls, 72 const blink::WebVector<blink::WebURL>& presentationUrls,
71 const blink::WebString& presentationId, 73 const blink::WebString& presentationId,
72 blink::WebPresentationConnectionClientCallbacks* callback) override; 74 blink::WebPresentationConnectionClientCallbacks* callback) override;
73 void sendString(const blink::WebString& presentationUrl, 75 void sendString(const blink::WebURL& presentationUrl,
74 const blink::WebString& presentationId, 76 const blink::WebString& presentationId,
75 const blink::WebString& message) override; 77 const blink::WebString& message) override;
76 void sendArrayBuffer(const blink::WebString& presentationUrl, 78 void sendArrayBuffer(const blink::WebURL& presentationUrl,
77 const blink::WebString& presentationId, 79 const blink::WebString& presentationId,
78 const uint8_t* data, 80 const uint8_t* data,
79 size_t length) override; 81 size_t length) override;
80 void sendBlobData(const blink::WebString& presentationUrl, 82 void sendBlobData(const blink::WebURL& presentationUrl,
81 const blink::WebString& presentationId, 83 const blink::WebString& presentationId,
82 const uint8_t* data, 84 const uint8_t* data,
83 size_t length) override; 85 size_t length) override;
84 void closeSession(const blink::WebString& presentationUrl, 86 void closeSession(const blink::WebURL& presentationUrl,
85 const blink::WebString& presentationId) override; 87 const blink::WebString& presentationId) override;
86 void terminateSession(const blink::WebString& presentationUrl, 88 void terminateSession(const blink::WebURL& presentationUrl,
87 const blink::WebString& presentationId) override; 89 const blink::WebString& presentationId) override;
88 void getAvailability( 90 void getAvailability(
89 const blink::WebString& availabilityUrl, 91 const blink::WebURL& availabilityUrl,
90 blink::WebPresentationAvailabilityCallbacks* callbacks) override; 92 blink::WebPresentationAvailabilityCallbacks* callbacks) override;
91 void startListening(blink::WebPresentationAvailabilityObserver*) override; 93 void startListening(blink::WebPresentationAvailabilityObserver*) override;
92 void stopListening(blink::WebPresentationAvailabilityObserver*) override; 94 void stopListening(blink::WebPresentationAvailabilityObserver*) override;
93 void setDefaultPresentationUrls( 95 void setDefaultPresentationUrls(
94 const blink::WebVector<blink::WebString>& presentationUrls) override; 96 const blink::WebVector<blink::WebURL>& presentationUrls) override;
95 97
96 // RenderFrameObserver implementation. 98 // RenderFrameObserver implementation.
97 void DidCommitProvisionalLoad( 99 void DidCommitProvisionalLoad(
98 bool is_new_navigation, 100 bool is_new_navigation,
99 bool is_same_page_navigation) override; 101 bool is_same_page_navigation) override;
100 void OnDestruct() override; 102 void OnDestruct() override;
101 103
102 // blink::mojom::PresentationServiceClient 104 // blink::mojom::PresentationServiceClient
103 void OnScreenAvailabilityNotSupported(const GURL& url) override; 105 void OnScreenAvailabilityNotSupported(const GURL& url) override;
104 void OnScreenAvailabilityUpdated(const GURL& url, bool available) override; 106 void OnScreenAvailabilityUpdated(const GURL& url, bool available) override;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 ACTIVE, 148 ACTIVE,
147 }; 149 };
148 150
149 using AvailabilityCallbacksMap = 151 using AvailabilityCallbacksMap =
150 IDMap<blink::WebPresentationAvailabilityCallbacks, IDMapOwnPointer>; 152 IDMap<blink::WebPresentationAvailabilityCallbacks, IDMapOwnPointer>;
151 using AvailabilityObserversSet = 153 using AvailabilityObserversSet =
152 std::set<blink::WebPresentationAvailabilityObserver*>; 154 std::set<blink::WebPresentationAvailabilityObserver*>;
153 155
154 // Tracks status of presentation displays availability for |availability_url|. 156 // Tracks status of presentation displays availability for |availability_url|.
155 struct AvailabilityStatus { 157 struct AvailabilityStatus {
156 explicit AvailabilityStatus(const std::string& availability_url); 158 explicit AvailabilityStatus(const GURL& availability_url);
157 ~AvailabilityStatus(); 159 ~AvailabilityStatus();
158 160
159 const std::string url; 161 const GURL url;
160 bool last_known_availability; 162 bool last_known_availability;
161 ListeningState listening_state; 163 ListeningState listening_state;
162 AvailabilityCallbacksMap availability_callbacks; 164 AvailabilityCallbacksMap availability_callbacks;
163 AvailabilityObserversSet availability_observers; 165 AvailabilityObserversSet availability_observers;
164 }; 166 };
165 167
166 std::map<std::string, std::unique_ptr<AvailabilityStatus>> 168 // Map of AvailabilityStatus for known URLs.
169 std::map<GURL, std::unique_ptr<AvailabilityStatus>>
167 availability_status_; 170 availability_status_;
168 171
169 // Updates the listening state of availability for |status| and notifies the 172 // Updates the listening state of availability for |status| and notifies the
170 // client. 173 // client.
171 void UpdateListeningState(AvailabilityStatus* status); 174 void UpdateListeningState(AvailabilityStatus* status);
172 175
173 DISALLOW_COPY_AND_ASSIGN(PresentationDispatcher); 176 DISALLOW_COPY_AND_ASSIGN(PresentationDispatcher);
174 }; 177 };
175 178
176 } // namespace content 179 } // namespace content
177 180
178 #endif // CONTENT_RENDERER_PRESENTATION_PRESENTATION_DISPATCHER_H_ 181 #endif // CONTENT_RENDERER_PRESENTATION_PRESENTATION_DISPATCHER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698