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

Side by Side Diff: chrome/browser/ui/content_settings/content_setting_image_model.cc

Issue 18004004: Web MIDI: Implement icon image and bubble (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: generated_resources.grd Created 7 years, 4 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 | Annotate | Revision Log
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/content_settings/content_setting_image_model.h" 5 #include "chrome/browser/ui/content_settings/content_setting_image_model.h"
6 6
7 #include "chrome/browser/content_settings/host_content_settings_map.h" 7 #include "chrome/browser/content_settings/host_content_settings_map.h"
8 #include "chrome/browser/content_settings/tab_specific_content_settings.h" 8 #include "chrome/browser/content_settings/tab_specific_content_settings.h"
9 #include "chrome/browser/prerender/prerender_manager.h" 9 #include "chrome/browser/prerender/prerender_manager.h"
10 #include "chrome/browser/profiles/profile.h" 10 #include "chrome/browser/profiles/profile.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 virtual void UpdateFromWebContents(WebContents* web_contents) OVERRIDE; 45 virtual void UpdateFromWebContents(WebContents* web_contents) OVERRIDE;
46 }; 46 };
47 47
48 class ContentSettingNotificationsImageModel : public ContentSettingImageModel { 48 class ContentSettingNotificationsImageModel : public ContentSettingImageModel {
49 public: 49 public:
50 ContentSettingNotificationsImageModel(); 50 ContentSettingNotificationsImageModel();
51 51
52 virtual void UpdateFromWebContents(WebContents* web_contents) OVERRIDE; 52 virtual void UpdateFromWebContents(WebContents* web_contents) OVERRIDE;
53 }; 53 };
54 54
55 class ContentSettingMIDISysExImageModel : public ContentSettingImageModel {
56 public:
57 ContentSettingMIDISysExImageModel();
58
59 virtual void UpdateFromWebContents(WebContents* web_contents) OVERRIDE;
60 };
61
55 namespace { 62 namespace {
56 63
57 struct ContentSettingsTypeIdEntry { 64 struct ContentSettingsTypeIdEntry {
58 ContentSettingsType type; 65 ContentSettingsType type;
59 int id; 66 int id;
60 }; 67 };
61 68
62 int GetIdForContentType(const ContentSettingsTypeIdEntry* entries, 69 int GetIdForContentType(const ContentSettingsTypeIdEntry* entries,
63 size_t num_entries, 70 size_t num_entries,
64 ContentSettingsType type) { 71 ContentSettingsType type) {
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 ContentSettingNotificationsImageModel::ContentSettingNotificationsImageModel() 297 ContentSettingNotificationsImageModel::ContentSettingNotificationsImageModel()
291 : ContentSettingImageModel(CONTENT_SETTINGS_TYPE_NOTIFICATIONS) { 298 : ContentSettingImageModel(CONTENT_SETTINGS_TYPE_NOTIFICATIONS) {
292 } 299 }
293 300
294 void ContentSettingNotificationsImageModel::UpdateFromWebContents( 301 void ContentSettingNotificationsImageModel::UpdateFromWebContents(
295 WebContents* web_contents) { 302 WebContents* web_contents) {
296 // Notifications do not have a bubble. 303 // Notifications do not have a bubble.
297 set_visible(false); 304 set_visible(false);
298 } 305 }
299 306
307 ContentSettingMIDISysExImageModel::ContentSettingMIDISysExImageModel()
308 : ContentSettingImageModel(CONTENT_SETTINGS_TYPE_MIDI_SYSEX) {
309 }
310
311 void ContentSettingMIDISysExImageModel::UpdateFromWebContents(
312 WebContents* web_contents) {
313 set_visible(false);
314 if (!web_contents)
315 return;
316 TabSpecificContentSettings* content_settings =
317 TabSpecificContentSettings::FromWebContents(web_contents);
318 if (!content_settings)
319 return;
320 const ContentSettingsUsagesState& usages_state =
321 content_settings->midi_usages_state();
322 if (usages_state.state_map().empty())
323 return;
324 set_visible(true);
325
326 // If any embedded site has access the allowed icon takes priority over the
327 // blocked icon.
328 unsigned int state_flags = 0;
329 usages_state.GetDetailedInfo(NULL, &state_flags);
330 bool allowed =
331 !!(state_flags & ContentSettingsUsagesState::TABSTATE_HAS_ANY_ALLOWED);
332 set_icon(allowed ? IDR_ALLOWED_MIDI_SYSEX : IDR_BLOCKED_MIDI_SYSEX);
333 set_tooltip(l10n_util::GetStringUTF8(allowed ?
334 IDS_MIDI_SYSEX_ALLOWED_TOOLTIP : IDS_MIDI_SYSEX_BLOCKED_TOOLTIP));
335 }
336
300 ContentSettingImageModel::ContentSettingImageModel( 337 ContentSettingImageModel::ContentSettingImageModel(
301 ContentSettingsType content_settings_type) 338 ContentSettingsType content_settings_type)
302 : content_settings_type_(content_settings_type), 339 : content_settings_type_(content_settings_type),
303 is_visible_(false), 340 is_visible_(false),
304 icon_(0), 341 icon_(0),
305 explanatory_string_id_(0) { 342 explanatory_string_id_(0) {
306 } 343 }
307 344
308 // static 345 // static
309 ContentSettingImageModel* 346 ContentSettingImageModel*
310 ContentSettingImageModel::CreateContentSettingImageModel( 347 ContentSettingImageModel::CreateContentSettingImageModel(
311 ContentSettingsType content_settings_type) { 348 ContentSettingsType content_settings_type) {
312 switch (content_settings_type) { 349 switch (content_settings_type) {
313 case CONTENT_SETTINGS_TYPE_GEOLOCATION: 350 case CONTENT_SETTINGS_TYPE_GEOLOCATION:
314 return new ContentSettingGeolocationImageModel(); 351 return new ContentSettingGeolocationImageModel();
315 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS: 352 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS:
316 return new ContentSettingNotificationsImageModel(); 353 return new ContentSettingNotificationsImageModel();
317 case CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS: 354 case CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS:
318 return new ContentSettingRPHImageModel(); 355 return new ContentSettingRPHImageModel();
319 case CONTENT_SETTINGS_TYPE_MEDIASTREAM: 356 case CONTENT_SETTINGS_TYPE_MEDIASTREAM:
320 case CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC: 357 case CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC:
321 case CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA: 358 case CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA:
322 return new ContentSettingMediaImageModel(content_settings_type); 359 return new ContentSettingMediaImageModel(content_settings_type);
360 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX:
361 return new ContentSettingMIDISysExImageModel();
323 default: 362 default:
324 return new ContentSettingBlockedImageModel(content_settings_type); 363 return new ContentSettingBlockedImageModel(content_settings_type);
325 } 364 }
326 } 365 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698