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

Unified Diff: chrome/browser/content_settings/tab_specific_content_settings.cc

Issue 20990005: Web MIDI: implement permission infobar (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review #2 and #10 Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/content_settings/tab_specific_content_settings.cc
diff --git a/chrome/browser/content_settings/tab_specific_content_settings.cc b/chrome/browser/content_settings/tab_specific_content_settings.cc
index 7b6d95ba38a46812a16004e56287081e0a2d2005..f16589e4c5eb415efad2a4ff71d7021fcdd360df 100644
--- a/chrome/browser/content_settings/tab_specific_content_settings.cc
+++ b/chrome/browser/content_settings/tab_specific_content_settings.cc
@@ -80,6 +80,7 @@ TabSpecificContentSettings::TabSpecificContentSettings(WebContents* tab)
allowed_local_shared_objects_(profile_),
blocked_local_shared_objects_(profile_),
geolocation_usages_state_(profile_, CONTENT_SETTINGS_TYPE_GEOLOCATION),
+ midi_usages_state_(profile_, CONTENT_SETTINGS_TYPE_MIDI_SYSEX),
pending_protocol_handler_(ProtocolHandler::EmptyProtocolHandler()),
previous_protocol_handler_(ProtocolHandler::EmptyProtocolHandler()),
pending_protocol_handler_setting_(CONTENT_SETTING_DEFAULT),
@@ -211,7 +212,8 @@ bool TabSpecificContentSettings::IsContentBlocked(
content_type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC ||
content_type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA ||
content_type == CONTENT_SETTINGS_TYPE_PPAPI_BROKER ||
- content_type == CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS) {
+ content_type == CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS ||
+ content_type == CONTENT_SETTINGS_TYPE_MIDI_SYSEX) {
return content_blocked_[content_type];
}
@@ -237,7 +239,8 @@ bool TabSpecificContentSettings::IsContentAllowed(
content_type != CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC &&
content_type != CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA &&
content_type != CONTENT_SETTINGS_TYPE_PPAPI_BROKER &&
- content_type != CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS) {
+ content_type != CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS &&
+ content_type != CONTENT_SETTINGS_TYPE_MIDI_SYSEX) {
return false;
}
@@ -496,6 +499,22 @@ void TabSpecificContentSettings::OnCameraAccessBlocked() {
OnContentBlocked(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, std::string());
}
+void TabSpecificContentSettings::OnMIDISysExAccessed(
+ const GURL& requesting_origin) {
+ midi_usages_state_.OnPermissionSet(requesting_origin, true);
+ // TODO(toyoshim): Bubble icon for MIDI is disabled for now.
+ // http://crbug.com/257618
+ // OnContentAllowed(CONTENT_SETTINGS_TYPE_MIDI_SYSEX);
+}
+
+void TabSpecificContentSettings::OnMIDISysExAccessBlocked(
+ const GURL& requesting_origin) {
+ midi_usages_state_.OnPermissionSet(requesting_origin, false);
+ // TODO(toyoshim): Bubble icon for MIDI is disabled for now.
+ // http://crbug.com/257618
+ // OnContentBlocked(CONTENT_SETTINGS_TYPE_MIDI_SYSEX, std::string());
+}
+
void TabSpecificContentSettings::ClearBlockedContentSettingsExceptForCookies() {
for (size_t i = 0; i < arraysize(content_blocked_); ++i) {
if (i == CONTENT_SETTINGS_TYPE_COOKIES)
@@ -549,10 +568,19 @@ void TabSpecificContentSettings::GeolocationDidNavigate(
geolocation_usages_state_.DidNavigate(details);
}
+void TabSpecificContentSettings::MIDIDidNavigate(
+ const content::LoadCommittedDetails& details) {
+ midi_usages_state_.DidNavigate(details);
+}
+
void TabSpecificContentSettings::ClearGeolocationContentSettings() {
geolocation_usages_state_.ClearStateMap();
}
+void TabSpecificContentSettings::ClearMIDIContentSettings() {
+ midi_usages_state_.ClearStateMap();
+}
+
void TabSpecificContentSettings::SetPepperBrokerAllowed(bool allowed) {
if (allowed) {
OnContentAllowed(CONTENT_SETTINGS_TYPE_PPAPI_BROKER);
@@ -585,6 +613,7 @@ void TabSpecificContentSettings::DidNavigateMainFrame(
// Clear "blocked" flags.
ClearBlockedContentSettingsExceptForCookies();
GeolocationDidNavigate(details);
+ MIDIDidNavigate(details);
}
}
@@ -605,6 +634,7 @@ void TabSpecificContentSettings::DidStartProvisionalLoadForFrame(
if (!is_error_page)
ClearCookieSpecificContentSettings();
ClearGeolocationContentSettings();
+ ClearMIDIContentSettings();
}
void TabSpecificContentSettings::AppCacheAccessed(const GURL& manifest_url,

Powered by Google App Engine
This is Rietveld 408576698