Index: chrome/browser/media/chrome_midi_permission_context.cc |
diff --git a/chrome/browser/media/chrome_midi_permission_context.cc b/chrome/browser/media/chrome_midi_permission_context.cc |
index ae55f9394b4cc3e48bf9ba085daa55818e0dcccc..7f727f80122a0d8499fcbc9dfb44113bfbcb8e5f 100644 |
--- a/chrome/browser/media/chrome_midi_permission_context.cc |
+++ b/chrome/browser/media/chrome_midi_permission_context.cc |
@@ -53,7 +53,11 @@ void ChromeMIDIPermissionContext::RequestMIDISysExPermission( |
const PermissionRequestID id(render_process_id, render_view_id, bridge_id); |
GURL embedder = web_contents->GetURL(); |
- if (!requesting_frame.is_valid() || !embedder.is_valid()) { |
+ // |requesting_frame| can be empty and invalid when the frame is a local |
+ // file. Here local files should be granted to show an infobar. |
+ // Any user's action will not be stored to content settings data base. |
+ if ((!requesting_frame.is_valid() && !requesting_frame.is_empty()) || |
+ !embedder.is_valid()) { |
LOG(WARNING) << "Attempt to use MIDI sysex from an invalid URL: " |
<< requesting_frame << "," << embedder |
<< " (Web MIDI is not supported in popups)"; |