OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/ui/tabs/tab_utils.h" | 5 #include "chrome/browser/ui/tabs/tab_utils.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/strings/string16.h" | 10 #include "base/strings/string16.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 | 26 |
27 #if defined(OS_MACOSX) | 27 #if defined(OS_MACOSX) |
28 #include "grit/theme_resources.h" | 28 #include "grit/theme_resources.h" |
29 #include "ui/base/resource/resource_bundle.h" | 29 #include "ui/base/resource/resource_bundle.h" |
30 #else | 30 #else |
31 #include "ui/gfx/paint_vector_icon.h" | 31 #include "ui/gfx/paint_vector_icon.h" |
32 #endif | 32 #endif |
33 | 33 |
34 struct LastMuteMetadata | 34 struct LastMuteMetadata |
35 : public content::WebContentsUserData<LastMuteMetadata> { | 35 : public content::WebContentsUserData<LastMuteMetadata> { |
36 TabMutedReason reason = TAB_MUTED_REASON_NONE; | 36 TabMutedReason reason = TabMutedReason::NONE; |
37 std::string extension_id; | 37 std::string extension_id; |
38 | 38 |
39 private: | 39 private: |
40 explicit LastMuteMetadata(content::WebContents* contents) {} | 40 explicit LastMuteMetadata(content::WebContents* contents) {} |
41 friend class content::WebContentsUserData<LastMuteMetadata>; | 41 friend class content::WebContentsUserData<LastMuteMetadata>; |
42 }; | 42 }; |
43 | 43 |
44 DEFINE_WEB_CONTENTS_USER_DATA_KEY(LastMuteMetadata); | 44 DEFINE_WEB_CONTENTS_USER_DATA_KEY(LastMuteMetadata); |
45 | 45 |
46 namespace chrome { | 46 namespace chrome { |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 animation->set_continuous(false); | 102 animation->set_continuous(false); |
103 return animation; | 103 return animation; |
104 } | 104 } |
105 | 105 |
106 } // namespace | 106 } // namespace |
107 | 107 |
108 bool ShouldTabShowFavicon(int capacity, | 108 bool ShouldTabShowFavicon(int capacity, |
109 bool is_pinned_tab, | 109 bool is_pinned_tab, |
110 bool is_active_tab, | 110 bool is_active_tab, |
111 bool has_favicon, | 111 bool has_favicon, |
112 TabMediaState media_state) { | 112 TabAlertState alert_state) { |
113 if (!has_favicon) | 113 if (!has_favicon) |
114 return false; | 114 return false; |
115 int required_capacity = 1; | 115 int required_capacity = 1; |
116 if (ShouldTabShowCloseButton(capacity, is_pinned_tab, is_active_tab)) | 116 if (ShouldTabShowCloseButton(capacity, is_pinned_tab, is_active_tab)) |
117 ++required_capacity; | 117 ++required_capacity; |
118 if (ShouldTabShowMediaIndicator( | 118 if (ShouldTabShowAlertIndicator(capacity, is_pinned_tab, is_active_tab, |
119 capacity, is_pinned_tab, is_active_tab, has_favicon, media_state)) { | 119 has_favicon, alert_state)) { |
120 ++required_capacity; | 120 ++required_capacity; |
121 } | 121 } |
122 return capacity >= required_capacity; | 122 return capacity >= required_capacity; |
123 } | 123 } |
124 | 124 |
125 bool ShouldTabShowMediaIndicator(int capacity, | 125 bool ShouldTabShowAlertIndicator(int capacity, |
126 bool is_pinned_tab, | 126 bool is_pinned_tab, |
127 bool is_active_tab, | 127 bool is_active_tab, |
128 bool has_favicon, | 128 bool has_favicon, |
129 TabMediaState media_state) { | 129 TabAlertState alert_state) { |
130 if (media_state == TAB_MEDIA_STATE_NONE) | 130 if (alert_state == TabAlertState::NONE) |
131 return false; | 131 return false; |
132 if (ShouldTabShowCloseButton(capacity, is_pinned_tab, is_active_tab)) | 132 if (ShouldTabShowCloseButton(capacity, is_pinned_tab, is_active_tab)) |
133 return capacity >= 2; | 133 return capacity >= 2; |
134 return capacity >= 1; | 134 return capacity >= 1; |
135 } | 135 } |
136 | 136 |
137 bool ShouldTabShowCloseButton(int capacity, | 137 bool ShouldTabShowCloseButton(int capacity, |
138 bool is_pinned_tab, | 138 bool is_pinned_tab, |
139 bool is_active_tab) { | 139 bool is_active_tab) { |
140 if (is_pinned_tab) | 140 if (is_pinned_tab) |
141 return false; | 141 return false; |
142 else if (is_active_tab) | 142 else if (is_active_tab) |
143 return true; | 143 return true; |
144 else | 144 else |
145 return capacity >= 3; | 145 return capacity >= 3; |
146 } | 146 } |
147 | 147 |
148 TabMediaState GetTabMediaStateForContents(content::WebContents* contents) { | 148 TabAlertState GetTabAlertStateForContents(content::WebContents* contents) { |
149 if (!contents) | 149 if (!contents) |
150 return TAB_MEDIA_STATE_NONE; | 150 return TabAlertState::NONE; |
151 | 151 |
152 scoped_refptr<MediaStreamCaptureIndicator> indicator = | 152 scoped_refptr<MediaStreamCaptureIndicator> indicator = |
153 MediaCaptureDevicesDispatcher::GetInstance()-> | 153 MediaCaptureDevicesDispatcher::GetInstance()-> |
154 GetMediaStreamCaptureIndicator(); | 154 GetMediaStreamCaptureIndicator(); |
155 if (indicator.get()) { | 155 if (indicator.get()) { |
156 if (indicator->IsBeingMirrored(contents)) | 156 if (indicator->IsBeingMirrored(contents)) |
157 return TAB_MEDIA_STATE_CAPTURING; | 157 return TabAlertState::TAB_CAPTURING; |
158 if (indicator->IsCapturingUserMedia(contents)) | 158 if (indicator->IsCapturingUserMedia(contents)) |
159 return TAB_MEDIA_STATE_RECORDING; | 159 return TabAlertState::MEDIA_RECORDING; |
160 } | 160 } |
161 | 161 |
162 if (contents->IsBluetoothDeviceConnected()) | 162 if (contents->IsBluetoothDeviceConnected()) |
163 return TAB_MEDIA_STATE_BLUETOOTH_CONNECTED; | 163 return TabAlertState::BLUETOOTH_CONNECTED; |
164 | 164 |
165 if (contents->IsAudioMuted()) | 165 if (contents->IsAudioMuted()) |
166 return TAB_MEDIA_STATE_AUDIO_MUTING; | 166 return TabAlertState::AUDIO_MUTING; |
167 if (contents->WasRecentlyAudible()) | 167 if (contents->WasRecentlyAudible()) |
168 return TAB_MEDIA_STATE_AUDIO_PLAYING; | 168 return TabAlertState::AUDIO_PLAYING; |
169 | 169 |
170 return TAB_MEDIA_STATE_NONE; | 170 return TabAlertState::NONE; |
171 } | 171 } |
172 | 172 |
173 gfx::Image GetTabMediaIndicatorImage(TabMediaState media_state, | 173 gfx::Image GetTabAlertIndicatorImage(TabAlertState alert_state, |
174 SkColor button_color) { | 174 SkColor button_color) { |
175 #if defined(OS_MACOSX) | 175 #if defined(OS_MACOSX) |
176 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); | 176 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); |
177 switch (media_state) { | 177 switch (alert_state) { |
178 case TAB_MEDIA_STATE_AUDIO_PLAYING: | 178 case TabAlertState::AUDIO_PLAYING: |
179 return rb->GetNativeImageNamed(IDR_TAB_AUDIO_INDICATOR); | 179 return rb->GetNativeImageNamed(IDR_TAB_AUDIO_INDICATOR); |
180 case TAB_MEDIA_STATE_AUDIO_MUTING: | 180 case TabAlertState::AUDIO_MUTING: |
181 return rb->GetNativeImageNamed(IDR_TAB_AUDIO_MUTING_INDICATOR); | 181 return rb->GetNativeImageNamed(IDR_TAB_AUDIO_MUTING_INDICATOR); |
182 case TAB_MEDIA_STATE_RECORDING: | 182 case TabAlertState::MEDIA_RECORDING: |
183 return rb->GetNativeImageNamed(IDR_TAB_RECORDING_INDICATOR); | 183 return rb->GetNativeImageNamed(IDR_TAB_RECORDING_INDICATOR); |
184 case TAB_MEDIA_STATE_CAPTURING: | 184 case TabAlertState::TAB_CAPTURING: |
185 return rb->GetNativeImageNamed(IDR_TAB_CAPTURE_INDICATOR); | 185 return rb->GetNativeImageNamed(IDR_TAB_CAPTURE_INDICATOR); |
186 case TAB_MEDIA_STATE_BLUETOOTH_CONNECTED: | 186 case TabAlertState::BLUETOOTH_CONNECTED: |
187 return rb->GetNativeImageNamed(IDR_TAB_BLUETOOTH_INDICATOR); | 187 return rb->GetNativeImageNamed(IDR_TAB_BLUETOOTH_INDICATOR); |
188 case TAB_MEDIA_STATE_NONE: | 188 case TabAlertState::NONE: |
189 break; | 189 break; |
190 } | 190 } |
191 #else | 191 #else |
192 gfx::VectorIconId icon_id = gfx::VectorIconId::VECTOR_ICON_NONE; | 192 gfx::VectorIconId icon_id = gfx::VectorIconId::VECTOR_ICON_NONE; |
193 switch (media_state) { | 193 switch (alert_state) { |
194 case TAB_MEDIA_STATE_AUDIO_PLAYING: | 194 case TabAlertState::AUDIO_PLAYING: |
195 icon_id = gfx::VectorIconId::TAB_AUDIO; | 195 icon_id = gfx::VectorIconId::TAB_AUDIO; |
196 break; | 196 break; |
197 case TAB_MEDIA_STATE_AUDIO_MUTING: | 197 case TabAlertState::AUDIO_MUTING: |
198 icon_id = gfx::VectorIconId::TAB_AUDIO_MUTING; | 198 icon_id = gfx::VectorIconId::TAB_AUDIO_MUTING; |
199 break; | 199 break; |
200 case TAB_MEDIA_STATE_RECORDING: | 200 case TabAlertState::MEDIA_RECORDING: |
201 icon_id = gfx::VectorIconId::TAB_MEDIA_RECORDING; | 201 icon_id = gfx::VectorIconId::TAB_MEDIA_RECORDING; |
202 break; | 202 break; |
203 case TAB_MEDIA_STATE_CAPTURING: | 203 case TabAlertState::TAB_CAPTURING: |
204 icon_id = gfx::VectorIconId::TAB_MEDIA_CAPTURING; | 204 icon_id = gfx::VectorIconId::TAB_MEDIA_CAPTURING; |
205 break; | 205 break; |
206 case TAB_MEDIA_STATE_BLUETOOTH_CONNECTED: | 206 case TabAlertState::BLUETOOTH_CONNECTED: |
207 icon_id = gfx::VectorIconId::TAB_BLUETOOTH_CONNECTED; | 207 icon_id = gfx::VectorIconId::TAB_BLUETOOTH_CONNECTED; |
208 break; | 208 break; |
209 case TAB_MEDIA_STATE_NONE: | 209 case TabAlertState::NONE: |
210 break; | 210 break; |
211 } | 211 } |
212 if (icon_id != gfx::VectorIconId::VECTOR_ICON_NONE) | 212 if (icon_id != gfx::VectorIconId::VECTOR_ICON_NONE) |
213 return gfx::Image(gfx::CreateVectorIcon(icon_id, 16, button_color)); | 213 return gfx::Image(gfx::CreateVectorIcon(icon_id, 16, button_color)); |
214 #endif | 214 #endif |
215 NOTREACHED(); | 215 NOTREACHED(); |
216 return gfx::Image(); | 216 return gfx::Image(); |
217 } | 217 } |
218 | 218 |
219 gfx::Image GetTabMediaIndicatorAffordanceImage(TabMediaState media_state, | 219 gfx::Image GetTabAlertIndicatorAffordanceImage(TabAlertState alert_state, |
220 SkColor button_color) { | 220 SkColor button_color) { |
221 switch (media_state) { | 221 switch (alert_state) { |
222 case TAB_MEDIA_STATE_AUDIO_PLAYING: | 222 case TabAlertState::AUDIO_PLAYING: |
223 return GetTabMediaIndicatorImage(TAB_MEDIA_STATE_AUDIO_MUTING, | 223 return GetTabAlertIndicatorImage(TabAlertState::AUDIO_MUTING, |
224 button_color); | 224 button_color); |
225 case TAB_MEDIA_STATE_AUDIO_MUTING: | 225 case TabAlertState::AUDIO_MUTING: |
226 case TAB_MEDIA_STATE_NONE: | 226 case TabAlertState::NONE: |
227 case TAB_MEDIA_STATE_RECORDING: | 227 case TabAlertState::MEDIA_RECORDING: |
228 case TAB_MEDIA_STATE_CAPTURING: | 228 case TabAlertState::TAB_CAPTURING: |
229 case TAB_MEDIA_STATE_BLUETOOTH_CONNECTED: | 229 case TabAlertState::BLUETOOTH_CONNECTED: |
230 return GetTabMediaIndicatorImage(media_state, button_color); | 230 return GetTabAlertIndicatorImage(alert_state, button_color); |
231 } | 231 } |
232 NOTREACHED(); | 232 NOTREACHED(); |
233 return GetTabMediaIndicatorImage(media_state, button_color); | 233 return GetTabAlertIndicatorImage(alert_state, button_color); |
234 } | 234 } |
235 | 235 |
236 scoped_ptr<gfx::Animation> CreateTabMediaIndicatorFadeAnimation( | 236 scoped_ptr<gfx::Animation> CreateTabAlertIndicatorFadeAnimation( |
237 TabMediaState media_state) { | 237 TabAlertState alert_state) { |
238 if (media_state == TAB_MEDIA_STATE_RECORDING || | 238 if (alert_state == TabAlertState::MEDIA_RECORDING || |
239 media_state == TAB_MEDIA_STATE_CAPTURING) { | 239 alert_state == TabAlertState::TAB_CAPTURING) { |
240 return TabRecordingIndicatorAnimation::Create(); | 240 return TabRecordingIndicatorAnimation::Create(); |
241 } | 241 } |
242 | 242 |
243 // Note: While it seems silly to use a one-part MultiAnimation, it's the only | 243 // Note: While it seems silly to use a one-part MultiAnimation, it's the only |
244 // gfx::Animation implementation that lets us control the frame interval. | 244 // gfx::Animation implementation that lets us control the frame interval. |
245 gfx::MultiAnimation::Parts parts; | 245 gfx::MultiAnimation::Parts parts; |
246 const bool is_for_fade_in = (media_state != TAB_MEDIA_STATE_NONE); | 246 const bool is_for_fade_in = (alert_state != TabAlertState::NONE); |
247 parts.push_back(gfx::MultiAnimation::Part( | 247 parts.push_back(gfx::MultiAnimation::Part( |
248 is_for_fade_in ? kIndicatorFadeInDurationMs : kIndicatorFadeOutDurationMs, | 248 is_for_fade_in ? kIndicatorFadeInDurationMs : kIndicatorFadeOutDurationMs, |
249 gfx::Tween::EASE_IN)); | 249 gfx::Tween::EASE_IN)); |
250 const base::TimeDelta interval = | 250 const base::TimeDelta interval = |
251 base::TimeDelta::FromMilliseconds(kIndicatorFrameIntervalMs); | 251 base::TimeDelta::FromMilliseconds(kIndicatorFrameIntervalMs); |
252 scoped_ptr<gfx::MultiAnimation> animation( | 252 scoped_ptr<gfx::MultiAnimation> animation( |
253 new gfx::MultiAnimation(parts, interval)); | 253 new gfx::MultiAnimation(parts, interval)); |
254 animation->set_continuous(false); | 254 animation->set_continuous(false); |
255 return std::move(animation); | 255 return std::move(animation); |
256 } | 256 } |
257 | 257 |
258 base::string16 AssembleTabTooltipText(const base::string16& title, | 258 base::string16 AssembleTabTooltipText(const base::string16& title, |
259 TabMediaState media_state) { | 259 TabAlertState alert_state) { |
260 if (media_state == TAB_MEDIA_STATE_NONE) | 260 if (alert_state == TabAlertState::NONE) |
261 return title; | 261 return title; |
262 | 262 |
263 base::string16 result = title; | 263 base::string16 result = title; |
264 if (!result.empty()) | 264 if (!result.empty()) |
265 result.append(1, '\n'); | 265 result.append(1, '\n'); |
266 switch (media_state) { | 266 switch (alert_state) { |
267 case TAB_MEDIA_STATE_AUDIO_PLAYING: | 267 case TabAlertState::AUDIO_PLAYING: |
268 result.append( | 268 result.append( |
269 l10n_util::GetStringUTF16(IDS_TOOLTIP_TAB_MEDIA_STATE_AUDIO_PLAYING)); | 269 l10n_util::GetStringUTF16(IDS_TOOLTIP_TAB_ALERT_STATE_AUDIO_PLAYING)); |
270 break; | 270 break; |
271 case TAB_MEDIA_STATE_AUDIO_MUTING: | 271 case TabAlertState::AUDIO_MUTING: |
272 result.append( | 272 result.append( |
273 l10n_util::GetStringUTF16(IDS_TOOLTIP_TAB_MEDIA_STATE_AUDIO_MUTING)); | 273 l10n_util::GetStringUTF16(IDS_TOOLTIP_TAB_ALERT_STATE_AUDIO_MUTING)); |
274 break; | 274 break; |
275 case TAB_MEDIA_STATE_RECORDING: | 275 case TabAlertState::MEDIA_RECORDING: |
| 276 result.append(l10n_util::GetStringUTF16( |
| 277 IDS_TOOLTIP_TAB_ALERT_STATE_MEDIA_RECORDING)); |
| 278 break; |
| 279 case TabAlertState::TAB_CAPTURING: |
276 result.append( | 280 result.append( |
277 l10n_util::GetStringUTF16(IDS_TOOLTIP_TAB_MEDIA_STATE_RECORDING)); | 281 l10n_util::GetStringUTF16(IDS_TOOLTIP_TAB_ALERT_STATE_TAB_CAPTURING)); |
278 break; | 282 break; |
279 case TAB_MEDIA_STATE_CAPTURING: | 283 case TabAlertState::BLUETOOTH_CONNECTED: |
280 result.append( | 284 result.append(l10n_util::GetStringUTF16( |
281 l10n_util::GetStringUTF16(IDS_TOOLTIP_TAB_MEDIA_STATE_CAPTURING)); | 285 IDS_TOOLTIP_TAB_ALERT_STATE_BLUETOOTH_CONNECTED)); |
282 break; | 286 break; |
283 case TAB_MEDIA_STATE_BLUETOOTH_CONNECTED: | 287 case TabAlertState::NONE: |
284 result.append( | |
285 l10n_util::GetStringUTF16(IDS_TOOLTIP_TAB_BLUETOOTH_CONNECTED)); | |
286 break; | |
287 case TAB_MEDIA_STATE_NONE: | |
288 NOTREACHED(); | 288 NOTREACHED(); |
289 break; | 289 break; |
290 } | 290 } |
291 return result; | 291 return result; |
292 } | 292 } |
293 | 293 |
294 bool AreExperimentalMuteControlsEnabled() { | 294 bool AreExperimentalMuteControlsEnabled() { |
295 return base::CommandLine::ForCurrentProcess()->HasSwitch( | 295 return base::CommandLine::ForCurrentProcess()->HasSwitch( |
296 switches::kEnableTabAudioMuting); | 296 switches::kEnableTabAudioMuting); |
297 } | 297 } |
298 | 298 |
299 bool CanToggleAudioMute(content::WebContents* contents) { | 299 bool CanToggleAudioMute(content::WebContents* contents) { |
300 switch (GetTabMediaStateForContents(contents)) { | 300 switch (GetTabAlertStateForContents(contents)) { |
301 case TAB_MEDIA_STATE_NONE: | 301 case TabAlertState::NONE: |
302 case TAB_MEDIA_STATE_AUDIO_PLAYING: | 302 case TabAlertState::AUDIO_PLAYING: |
303 case TAB_MEDIA_STATE_AUDIO_MUTING: | 303 case TabAlertState::AUDIO_MUTING: |
304 return true; | 304 return true; |
305 case TAB_MEDIA_STATE_RECORDING: | 305 case TabAlertState::MEDIA_RECORDING: |
306 case TAB_MEDIA_STATE_CAPTURING: | 306 case TabAlertState::TAB_CAPTURING: |
307 case TAB_MEDIA_STATE_BLUETOOTH_CONNECTED: | 307 case TabAlertState::BLUETOOTH_CONNECTED: |
308 return false; | 308 return false; |
309 } | 309 } |
310 NOTREACHED(); | 310 NOTREACHED(); |
311 return false; | 311 return false; |
312 } | 312 } |
313 | 313 |
314 TabMutedReason GetTabAudioMutedReason(content::WebContents* contents) { | 314 TabMutedReason GetTabAudioMutedReason(content::WebContents* contents) { |
315 LastMuteMetadata::CreateForWebContents(contents); // Ensures metadata exists. | 315 LastMuteMetadata::CreateForWebContents(contents); // Ensures metadata exists. |
316 LastMuteMetadata* const metadata = | 316 LastMuteMetadata* const metadata = |
317 LastMuteMetadata::FromWebContents(contents); | 317 LastMuteMetadata::FromWebContents(contents); |
318 if (GetTabMediaStateForContents(contents) == TAB_MEDIA_STATE_CAPTURING) { | 318 if (GetTabAlertStateForContents(contents) == TabAlertState::TAB_CAPTURING) { |
319 // For tab capture, libcontent forces muting off. | 319 // For tab capture, libcontent forces muting off. |
320 metadata->reason = TAB_MUTED_REASON_MEDIA_CAPTURE; | 320 metadata->reason = TabMutedReason::MEDIA_CAPTURE; |
321 metadata->extension_id.clear(); | 321 metadata->extension_id.clear(); |
322 } | 322 } |
323 return metadata->reason; | 323 return metadata->reason; |
324 } | 324 } |
325 | 325 |
326 const std::string& GetExtensionIdForMutedTab(content::WebContents* contents) { | 326 const std::string& GetExtensionIdForMutedTab(content::WebContents* contents) { |
327 DCHECK_EQ(GetTabAudioMutedReason(contents) != TAB_MUTED_REASON_EXTENSION, | 327 DCHECK_EQ(GetTabAudioMutedReason(contents) != TabMutedReason::EXTENSION, |
328 LastMuteMetadata::FromWebContents(contents)->extension_id.empty()); | 328 LastMuteMetadata::FromWebContents(contents)->extension_id.empty()); |
329 return LastMuteMetadata::FromWebContents(contents)->extension_id; | 329 return LastMuteMetadata::FromWebContents(contents)->extension_id; |
330 } | 330 } |
331 | 331 |
332 TabMutedResult SetTabAudioMuted(content::WebContents* contents, | 332 TabMutedResult SetTabAudioMuted(content::WebContents* contents, |
333 bool mute, | 333 bool mute, |
334 TabMutedReason reason, | 334 TabMutedReason reason, |
335 const std::string& extension_id) { | 335 const std::string& extension_id) { |
336 DCHECK(contents); | 336 DCHECK(contents); |
337 DCHECK_NE(TAB_MUTED_REASON_NONE, reason); | 337 DCHECK(TabMutedReason::NONE != reason); |
338 | 338 |
339 if (reason == TAB_MUTED_REASON_AUDIO_INDICATOR && | 339 if (reason == TabMutedReason::AUDIO_INDICATOR && |
340 !AreExperimentalMuteControlsEnabled()) { | 340 !AreExperimentalMuteControlsEnabled()) { |
341 return TAB_MUTED_RESULT_FAIL_NOT_ENABLED; | 341 return TabMutedResult::FAIL_NOT_ENABLED; |
342 } | 342 } |
343 | 343 |
344 if (!chrome::CanToggleAudioMute(contents)) | 344 if (!chrome::CanToggleAudioMute(contents)) |
345 return TAB_MUTED_RESULT_FAIL_TABCAPTURE; | 345 return TabMutedResult::FAIL_TABCAPTURE; |
346 | 346 |
347 contents->SetAudioMuted(mute); | 347 contents->SetAudioMuted(mute); |
348 | 348 |
349 LastMuteMetadata::CreateForWebContents(contents); // Ensures metadata exists. | 349 LastMuteMetadata::CreateForWebContents(contents); // Ensures metadata exists. |
350 LastMuteMetadata* const metadata = | 350 LastMuteMetadata* const metadata = |
351 LastMuteMetadata::FromWebContents(contents); | 351 LastMuteMetadata::FromWebContents(contents); |
352 metadata->reason = reason; | 352 metadata->reason = reason; |
353 if (reason == TAB_MUTED_REASON_EXTENSION) { | 353 if (reason == TabMutedReason::EXTENSION) { |
354 DCHECK(!extension_id.empty()); | 354 DCHECK(!extension_id.empty()); |
355 metadata->extension_id = extension_id; | 355 metadata->extension_id = extension_id; |
356 } else { | 356 } else { |
357 metadata->extension_id.clear(); | 357 metadata->extension_id.clear(); |
358 } | 358 } |
359 | 359 |
360 return TAB_MUTED_RESULT_SUCCESS; | 360 return TabMutedResult::SUCCESS; |
361 } | 361 } |
362 | 362 |
363 void UnmuteIfMutedByExtension(content::WebContents* contents, | 363 void UnmuteIfMutedByExtension(content::WebContents* contents, |
364 const std::string& extension_id) { | 364 const std::string& extension_id) { |
365 LastMuteMetadata::CreateForWebContents(contents); // Ensures metadata exists. | 365 LastMuteMetadata::CreateForWebContents(contents); // Ensures metadata exists. |
366 LastMuteMetadata* const metadata = | 366 LastMuteMetadata* const metadata = |
367 LastMuteMetadata::FromWebContents(contents); | 367 LastMuteMetadata::FromWebContents(contents); |
368 if (metadata->reason == TAB_MUTED_REASON_EXTENSION && | 368 if (metadata->reason == TabMutedReason::EXTENSION && |
369 metadata->extension_id == extension_id) { | 369 metadata->extension_id == extension_id) { |
370 SetTabAudioMuted(contents, false, TAB_MUTED_REASON_EXTENSION, extension_id); | 370 SetTabAudioMuted(contents, false, TabMutedReason::EXTENSION, extension_id); |
371 } | 371 } |
372 } | 372 } |
373 | 373 |
374 bool AreAllTabsMuted(const TabStripModel& tab_strip, | 374 bool AreAllTabsMuted(const TabStripModel& tab_strip, |
375 const std::vector<int>& indices) { | 375 const std::vector<int>& indices) { |
376 for (std::vector<int>::const_iterator i = indices.begin(); i != indices.end(); | 376 for (std::vector<int>::const_iterator i = indices.begin(); i != indices.end(); |
377 ++i) { | 377 ++i) { |
378 if (!tab_strip.GetWebContentsAt(*i)->IsAudioMuted()) | 378 if (!tab_strip.GetWebContentsAt(*i)->IsAudioMuted()) |
379 return false; | 379 return false; |
380 } | 380 } |
381 return true; | 381 return true; |
382 } | 382 } |
383 | 383 |
384 } // namespace chrome | 384 } // namespace chrome |
OLD | NEW |