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

Side by Side Diff: third_party/WebKit/Source/modules/media_controls/elements/MediaControlCastButtonElement.cpp

Issue 2782373002: Remove MediaControls methods needed for the Cast button (Closed)
Patch Set: Fixed MediaControlsImplTest Created 3 years, 7 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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 "modules/media_controls/elements/MediaControlCastButtonElement.h" 5 #include "modules/media_controls/elements/MediaControlCastButtonElement.h"
6 6
7 #include "core/InputTypeNames.h" 7 #include "core/InputTypeNames.h"
8 #include "core/dom/ClientRect.h" 8 #include "core/dom/ClientRect.h"
9 #include "core/events/Event.h" 9 #include "core/events/Event.h"
10 #include "core/html/HTMLMediaElement.h" 10 #include "core/html/HTMLMediaElement.h"
11 #include "modules/media_controls/MediaControlsImpl.h" 11 #include "modules/media_controls/MediaControlsImpl.h"
12 #include "modules/media_controls/elements/MediaControlElementsHelper.h" 12 #include "modules/media_controls/elements/MediaControlElementsHelper.h"
13 #include "modules/remoteplayback/HTMLMediaElementRemotePlayback.h"
14 #include "modules/remoteplayback/RemotePlayback.h"
13 #include "platform/Histogram.h" 15 #include "platform/Histogram.h"
14 #include "public/platform/Platform.h" 16 #include "public/platform/Platform.h"
15 17
16 namespace blink { 18 namespace blink {
17 19
18 namespace { 20 namespace {
19 21
20 Element* ElementFromCenter(Element& element) { 22 Element* ElementFromCenter(Element& element) {
21 ClientRect* client_rect = element.getBoundingClientRect(); 23 ClientRect* client_rect = element.getBoundingClientRect();
22 int center_x = 24 int center_x =
(...skipping 12 matching lines...) Expand all
35 : MediaControlInputElement(media_controls, kMediaCastOnButton), 37 : MediaControlInputElement(media_controls, kMediaCastOnButton),
36 is_overlay_button_(is_overlay_button) { 38 is_overlay_button_(is_overlay_button) {
37 EnsureUserAgentShadowRoot(); 39 EnsureUserAgentShadowRoot();
38 SetShadowPseudoId(is_overlay_button 40 SetShadowPseudoId(is_overlay_button
39 ? "-internal-media-controls-overlay-cast-button" 41 ? "-internal-media-controls-overlay-cast-button"
40 : "-internal-media-controls-cast-button"); 42 : "-internal-media-controls-cast-button");
41 setType(InputTypeNames::button); 43 setType(InputTypeNames::button);
42 44
43 if (is_overlay_button_) 45 if (is_overlay_button_)
44 RecordMetrics(CastOverlayMetrics::kCreated); 46 RecordMetrics(CastOverlayMetrics::kCreated);
45 SetIsPlayingRemotely(false); 47 UpdateDisplayType();
46 } 48 }
47 49
48 void MediaControlCastButtonElement::TryShowOverlay() { 50 void MediaControlCastButtonElement::TryShowOverlay() {
49 DCHECK(is_overlay_button_); 51 DCHECK(is_overlay_button_);
50 52
51 SetIsWanted(true); 53 SetIsWanted(true);
52 if (ElementFromCenter(*this) != &MediaElement()) { 54 if (ElementFromCenter(*this) != &MediaElement()) {
53 SetIsWanted(false); 55 SetIsWanted(false);
54 return; 56 return;
55 } 57 }
56 58
57 DCHECK(IsWanted()); 59 DCHECK(IsWanted());
58 if (!show_use_counted_) { 60 if (!show_use_counted_) {
59 show_use_counted_ = true; 61 show_use_counted_ = true;
60 RecordMetrics(CastOverlayMetrics::kShown); 62 RecordMetrics(CastOverlayMetrics::kShown);
61 } 63 }
62 } 64 }
63 65
64 void MediaControlCastButtonElement::SetIsPlayingRemotely( 66 void MediaControlCastButtonElement::UpdateDisplayType() {
65 bool is_playing_remotely) { 67 if (IsPlayingRemotely()) {
66 if (is_playing_remotely) {
67 if (is_overlay_button_) { 68 if (is_overlay_button_) {
68 SetDisplayType(kMediaOverlayCastOnButton); 69 SetDisplayType(kMediaOverlayCastOnButton);
69 } else { 70 } else {
70 SetDisplayType(kMediaCastOnButton); 71 SetDisplayType(kMediaCastOnButton);
71 } 72 }
72 } else { 73 } else {
73 if (is_overlay_button_) { 74 if (is_overlay_button_) {
74 SetDisplayType(kMediaOverlayCastOffButton); 75 SetDisplayType(kMediaOverlayCastOffButton);
75 } else { 76 } else {
76 SetDisplayType(kMediaCastOffButton); 77 SetDisplayType(kMediaCastOffButton);
77 } 78 }
78 } 79 }
79 UpdateOverflowString(); 80 UpdateOverflowString();
80 } 81 }
81 82
82 bool MediaControlCastButtonElement::WillRespondToMouseClickEvents() { 83 bool MediaControlCastButtonElement::WillRespondToMouseClickEvents() {
83 return true; 84 return true;
84 } 85 }
85 86
86 WebLocalizedString::Name 87 WebLocalizedString::Name
87 MediaControlCastButtonElement::GetOverflowStringName() { 88 MediaControlCastButtonElement::GetOverflowStringName() {
88 if (MediaElement().IsPlayingRemotely()) 89 if (IsPlayingRemotely())
89 return WebLocalizedString::kOverflowMenuStopCast; 90 return WebLocalizedString::kOverflowMenuStopCast;
90 return WebLocalizedString::kOverflowMenuCast; 91 return WebLocalizedString::kOverflowMenuCast;
91 } 92 }
92 93
93 bool MediaControlCastButtonElement::HasOverflowButton() { 94 bool MediaControlCastButtonElement::HasOverflowButton() {
94 return true; 95 return true;
95 } 96 }
96 97
97 void MediaControlCastButtonElement::DefaultEventHandler(Event* event) { 98 void MediaControlCastButtonElement::DefaultEventHandler(Event* event) {
98 if (event->type() == EventTypeNames::click) { 99 if (event->type() == EventTypeNames::click) {
99 if (is_overlay_button_) { 100 if (is_overlay_button_) {
100 Platform::Current()->RecordAction( 101 Platform::Current()->RecordAction(
101 UserMetricsAction("Media.Controls.CastOverlay")); 102 UserMetricsAction("Media.Controls.CastOverlay"));
102 } else { 103 } else {
103 Platform::Current()->RecordAction( 104 Platform::Current()->RecordAction(
104 UserMetricsAction("Media.Controls.Cast")); 105 UserMetricsAction("Media.Controls.Cast"));
105 } 106 }
106 107
107 if (is_overlay_button_ && !click_use_counted_) { 108 if (is_overlay_button_ && !click_use_counted_) {
108 click_use_counted_ = true; 109 click_use_counted_ = true;
109 RecordMetrics(CastOverlayMetrics::kClicked); 110 RecordMetrics(CastOverlayMetrics::kClicked);
110 } 111 }
111 if (MediaElement().IsPlayingRemotely()) { 112 RemotePlayback* remote =
112 MediaElement().RequestRemotePlaybackControl(); 113 HTMLMediaElementRemotePlayback::remote(MediaElement());
113 } else { 114 if (remote)
114 MediaElement().RequestRemotePlayback(); 115 remote->PromptInternal();
115 }
116 } 116 }
117 MediaControlInputElement::DefaultEventHandler(event); 117 MediaControlInputElement::DefaultEventHandler(event);
118 } 118 }
119 119
120 bool MediaControlCastButtonElement::KeepEventInNode(Event* event) { 120 bool MediaControlCastButtonElement::KeepEventInNode(Event* event) {
121 return MediaControlElementsHelper::IsUserInteractionEvent(event); 121 return MediaControlElementsHelper::IsUserInteractionEvent(event);
122 } 122 }
123 123
124 void MediaControlCastButtonElement::RecordMetrics(CastOverlayMetrics metric) { 124 void MediaControlCastButtonElement::RecordMetrics(CastOverlayMetrics metric) {
125 DCHECK(is_overlay_button_); 125 DCHECK(is_overlay_button_);
126 DEFINE_STATIC_LOCAL( 126 DEFINE_STATIC_LOCAL(
127 EnumerationHistogram, overlay_histogram, 127 EnumerationHistogram, overlay_histogram,
128 ("Cast.Sender.Overlay", static_cast<int>(CastOverlayMetrics::kCount))); 128 ("Cast.Sender.Overlay", static_cast<int>(CastOverlayMetrics::kCount)));
129 overlay_histogram.Count(static_cast<int>(metric)); 129 overlay_histogram.Count(static_cast<int>(metric));
130 } 130 }
131 131
132 bool MediaControlCastButtonElement::IsPlayingRemotely() const {
133 RemotePlayback* remote =
134 HTMLMediaElementRemotePlayback::remote(MediaElement());
135 return remote && remote->GetState() != WebRemotePlaybackState::kDisconnected;
136 }
137
132 } // namespace blink 138 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698