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

Side by Side Diff: chrome/browser/ui/tabs/tab_utils.cc

Issue 1827083004: UI: Rename MediaState to AlertState (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bluetooth-tab-indicator
Patch Set: Keep gypi ordered Created 4 years, 8 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
« no previous file with comments | « chrome/browser/ui/tabs/tab_utils.h ('k') | chrome/browser/ui/views/tabs/OWNERS » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/ui/tabs/tab_utils.h ('k') | chrome/browser/ui/views/tabs/OWNERS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698