diff options
author | kkimlabs@chromium.org <kkimlabs@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-30 03:18:30 +0000 |
---|---|---|
committer | kkimlabs@chromium.org <kkimlabs@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-30 03:18:30 +0000 |
commit | 00880a0c5a9b4add3539e63c509e5117f1074b0a (patch) | |
tree | effed07b08782e2888cf88ce684778e6b4d8be86 | |
parent | 8ea113d23be6646aa06058ec94bdc0cf881d62ba (diff) | |
download | chromium_src-00880a0c5a9b4add3539e63c509e5117f1074b0a.zip chromium_src-00880a0c5a9b4add3539e63c509e5117f1074b0a.tar.gz chromium_src-00880a0c5a9b4add3539e63c509e5117f1074b0a.tar.bz2 |
Cancel MIDI permission request infobar on MIDIAccess stop.
On WebCore::MIDIAccess::stop(), renderer didn't cancel the MIDI
permission request infobar. As a result, when an iframe webpage that
requested MIDI permission is navigated away, the MIDI infobar is not
dismissed, unlike the geolocation infobar. This CL makes the MIDI infobar
be dismissed on WebCore::MIDIAccess::stop().
BUG=309893
Review URL: https://codereview.chromium.org/38043004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@231719 0039d316-1c4b-4281-b951-d872f2087c98
22 files changed, 193 insertions, 17 deletions
diff --git a/android_webview/browser/aw_browser_context.cc b/android_webview/browser/aw_browser_context.cc index 7adc6dd..ca3a5b8 100644 --- a/android_webview/browser/aw_browser_context.cc +++ b/android_webview/browser/aw_browser_context.cc @@ -247,12 +247,20 @@ net::URLRequestContextGetter* AwBrowserContext::GetMediaRequestContext() { void AwBrowserContext::RequestMIDISysExPermission( int render_process_id, int render_view_id, + int bridge_id, const GURL& requesting_frame, const MIDISysExPermissionCallback& callback) { // TODO(toyoshim): Android is not supported yet. callback.Run(false); } +void AwBrowserContext::CancelMIDISysExPermissionRequest( + int render_process_id, + int render_view_id, + int bridge_id, + const GURL& requesting_frame) { +} + net::URLRequestContextGetter* AwBrowserContext::GetMediaRequestContextForRenderProcess( int renderer_child_id) { diff --git a/android_webview/browser/aw_browser_context.h b/android_webview/browser/aw_browser_context.h index c7c3ea9..d77393c 100644 --- a/android_webview/browser/aw_browser_context.h +++ b/android_webview/browser/aw_browser_context.h @@ -90,8 +90,14 @@ class AwBrowserContext : public content::BrowserContext, virtual void RequestMIDISysExPermission( int render_process_id, int render_view_id, + int bridge_id, const GURL& requesting_frame, const MIDISysExPermissionCallback& callback) OVERRIDE; + virtual void CancelMIDISysExPermissionRequest( + int render_process_id, + int render_view_id, + int bridge_id, + const GURL& requesting_frame) OVERRIDE; virtual content::ResourceContext* GetResourceContext() OVERRIDE; virtual content::DownloadManagerDelegate* GetDownloadManagerDelegate() OVERRIDE; diff --git a/chrome/browser/media/chrome_midi_permission_context.cc b/chrome/browser/media/chrome_midi_permission_context.cc index c233400..ae55f93 100644 --- a/chrome/browser/media/chrome_midi_permission_context.cc +++ b/chrome/browser/media/chrome_midi_permission_context.cc @@ -34,6 +34,7 @@ void ChromeMIDIPermissionContext::Shutdown() { void ChromeMIDIPermissionContext::RequestMIDISysExPermission( int render_process_id, int render_view_id, + int bridge_id, const GURL& requesting_frame, const content::BrowserContext::MIDISysExPermissionCallback& callback) { DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); @@ -49,7 +50,7 @@ void ChromeMIDIPermissionContext::RequestMIDISysExPermission( if (!web_contents) return; - const PermissionRequestID id(render_process_id, render_view_id, 0); + const PermissionRequestID id(render_process_id, render_view_id, bridge_id); GURL embedder = web_contents->GetURL(); if (!requesting_frame.is_valid() || !embedder.is_valid()) { @@ -63,6 +64,15 @@ void ChromeMIDIPermissionContext::RequestMIDISysExPermission( DecidePermission(id, requesting_frame, embedder, callback); } +void ChromeMIDIPermissionContext::CancelMIDISysExPermissionRequest( + int render_process_id, + int render_view_id, + int bridge_id, + const GURL& requesting_frame) { + CancelPendingInfoBarRequest( + PermissionRequestID(render_process_id, render_view_id, bridge_id)); +} + void ChromeMIDIPermissionContext::DecidePermission( const PermissionRequestID& id, const GURL& requesting_frame, @@ -129,3 +139,11 @@ PermissionQueueController* ChromeMIDIPermissionContext::GetQueueController() { } return permission_queue_controller_.get(); } + +void ChromeMIDIPermissionContext::CancelPendingInfoBarRequest( + const PermissionRequestID& id) { + DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); + if (shutting_down_) + return; + GetQueueController()->CancelInfoBarRequest(id); +} diff --git a/chrome/browser/media/chrome_midi_permission_context.h b/chrome/browser/media/chrome_midi_permission_context.h index 7f2ff32..cae2e76 100644 --- a/chrome/browser/media/chrome_midi_permission_context.h +++ b/chrome/browser/media/chrome_midi_permission_context.h @@ -27,9 +27,16 @@ class ChromeMIDIPermissionContext : public BrowserContextKeyedService { void RequestMIDISysExPermission( int render_process_id, int render_view_id, + int bridge_id, const GURL& requesting_frame, const content::BrowserContext::MIDISysExPermissionCallback& callback); + // Cancel a pending MIDI permission request. + void CancelMIDISysExPermissionRequest(int render_process_id, + int render_view_id, + int bridge_id, + const GURL& requesting_frame); + private: // Decide whether the permission should be granted. // Calls PermissionDecided if permission can be decided non-interactively, @@ -59,6 +66,9 @@ class ChromeMIDIPermissionContext : public BrowserContextKeyedService { // Return an instance of the infobar queue controller, creating it if needed. PermissionQueueController* GetQueueController(); + // Removes any pending InfoBar request. + void CancelPendingInfoBarRequest(const PermissionRequestID& id); + Profile* const profile_; bool shutting_down_; scoped_ptr<PermissionQueueController> permission_queue_controller_; diff --git a/chrome/browser/profiles/off_the_record_profile_impl.cc b/chrome/browser/profiles/off_the_record_profile_impl.cc index af3c60c..7411348 100644 --- a/chrome/browser/profiles/off_the_record_profile_impl.cc +++ b/chrome/browser/profiles/off_the_record_profile_impl.cc @@ -288,16 +288,29 @@ OffTheRecordProfileImpl::GetMediaRequestContextForStoragePartition( void OffTheRecordProfileImpl::RequestMIDISysExPermission( int render_process_id, int render_view_id, + int bridge_id, const GURL& requesting_frame, const MIDISysExPermissionCallback& callback) { ChromeMIDIPermissionContext* context = ChromeMIDIPermissionContextFactory::GetForProfile(this); context->RequestMIDISysExPermission(render_process_id, render_view_id, + bridge_id, requesting_frame, callback); } +void OffTheRecordProfileImpl::CancelMIDISysExPermissionRequest( + int render_process_id, + int render_view_id, + int bridge_id, + const GURL& requesting_frame) { + ChromeMIDIPermissionContext* context = + ChromeMIDIPermissionContextFactory::GetForProfile(this); + context->CancelMIDISysExPermissionRequest( + render_process_id, render_view_id, bridge_id, requesting_frame); +} + net::URLRequestContextGetter* OffTheRecordProfileImpl::GetRequestContextForExtensions() { return io_data_.GetExtensionsRequestContextGetter().get(); diff --git a/chrome/browser/profiles/off_the_record_profile_impl.h b/chrome/browser/profiles/off_the_record_profile_impl.h index c4b793e..57c127b 100644 --- a/chrome/browser/profiles/off_the_record_profile_impl.h +++ b/chrome/browser/profiles/off_the_record_profile_impl.h @@ -101,8 +101,14 @@ class OffTheRecordProfileImpl : public Profile { virtual void RequestMIDISysExPermission( int render_process_id, int render_view_id, + int bridge_id, const GURL& requesting_frame, const MIDISysExPermissionCallback& callback) OVERRIDE; + virtual void CancelMIDISysExPermissionRequest( + int render_process_id, + int render_view_id, + int bridge_id, + const GURL& requesting_frame) OVERRIDE; virtual content::ResourceContext* GetResourceContext() OVERRIDE; virtual content::GeolocationPermissionContext* GetGeolocationPermissionContext() OVERRIDE; diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc index 8b6afe1..12ba370 100644 --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc @@ -911,16 +911,29 @@ ProfileImpl::GetMediaRequestContextForStoragePartition( void ProfileImpl::RequestMIDISysExPermission( int render_process_id, int render_view_id, + int bridge_id, const GURL& requesting_frame, const MIDISysExPermissionCallback& callback) { ChromeMIDIPermissionContext* context = ChromeMIDIPermissionContextFactory::GetForProfile(this); context->RequestMIDISysExPermission(render_process_id, render_view_id, + bridge_id, requesting_frame, callback); } +void ProfileImpl::CancelMIDISysExPermissionRequest( + int render_process_id, + int render_view_id, + int bridge_id, + const GURL& requesting_frame) { + ChromeMIDIPermissionContext* context = + ChromeMIDIPermissionContextFactory::GetForProfile(this); + context->CancelMIDISysExPermissionRequest( + render_process_id, render_view_id, bridge_id, requesting_frame); +} + content::ResourceContext* ProfileImpl::GetResourceContext() { return io_data_.GetResourceContext(); } diff --git a/chrome/browser/profiles/profile_impl.h b/chrome/browser/profiles/profile_impl.h index 1401d1b..1ac5746 100644 --- a/chrome/browser/profiles/profile_impl.h +++ b/chrome/browser/profiles/profile_impl.h @@ -76,8 +76,14 @@ class ProfileImpl : public Profile { virtual void RequestMIDISysExPermission( int render_process_id, int render_view_id, + int bridge_id, const GURL& requesting_frame, const MIDISysExPermissionCallback& callback) OVERRIDE; + virtual void CancelMIDISysExPermissionRequest( + int render_process_id, + int render_view_id, + int bridge_id, + const GURL& requesting_frame) OVERRIDE; virtual content::ResourceContext* GetResourceContext() OVERRIDE; virtual content::GeolocationPermissionContext* GetGeolocationPermissionContext() OVERRIDE; diff --git a/chrome/browser/ui/app_list/test/fake_profile.cc b/chrome/browser/ui/app_list/test/fake_profile.cc index d21a2d4..41fcb85 100644 --- a/chrome/browser/ui/app_list/test/fake_profile.cc +++ b/chrome/browser/ui/app_list/test/fake_profile.cc @@ -55,10 +55,18 @@ FakeProfile::GetMediaRequestContextForStoragePartition( void FakeProfile::RequestMIDISysExPermission( int render_process_id, int render_view_id, + int bridge_id, const GURL& requesting_frame, const MIDISysExPermissionCallback& callback) { } +void FakeProfile::CancelMIDISysExPermissionRequest( + int render_process_id, + int render_view_id, + int bridge_id, + const GURL& requesting_frame) { +} + content::ResourceContext* FakeProfile::GetResourceContext() { return NULL; } diff --git a/chrome/browser/ui/app_list/test/fake_profile.h b/chrome/browser/ui/app_list/test/fake_profile.h index 4849f6d..04e69a0 100644 --- a/chrome/browser/ui/app_list/test/fake_profile.h +++ b/chrome/browser/ui/app_list/test/fake_profile.h @@ -46,8 +46,14 @@ class FakeProfile : public Profile { virtual void RequestMIDISysExPermission( int render_process_id, int render_view_id, + int bridge_id, const GURL& requesting_frame, const MIDISysExPermissionCallback& callback) OVERRIDE; + virtual void CancelMIDISysExPermissionRequest( + int render_process_id, + int render_view_id, + int bridge_id, + const GURL& requesting_frame) OVERRIDE; virtual content::ResourceContext* GetResourceContext() OVERRIDE; virtual content::GeolocationPermissionContext* GetGeolocationPermissionContext() OVERRIDE; diff --git a/chrome/test/base/testing_profile.cc b/chrome/test/base/testing_profile.cc index bc655aa..83de4b4 100644 --- a/chrome/test/base/testing_profile.cc +++ b/chrome/test/base/testing_profile.cc @@ -700,12 +700,20 @@ TestingProfile::GetMediaRequestContextForStoragePartition( void TestingProfile::RequestMIDISysExPermission( int render_process_id, int render_view_id, + int bridge_id, const GURL& requesting_frame, const MIDISysExPermissionCallback& callback) { // Always reject requests for testing. callback.Run(false); } +void TestingProfile::CancelMIDISysExPermissionRequest( + int render_process_id, + int render_view_id, + int bridge_id, + const GURL& requesting_frame) { +} + net::URLRequestContextGetter* TestingProfile::GetRequestContextForExtensions() { if (!extensions_request_context_.get()) extensions_request_context_ = new TestExtensionURLRequestContextGetter(); diff --git a/chrome/test/base/testing_profile.h b/chrome/test/base/testing_profile.h index 297cb95..6f2f3eb 100644 --- a/chrome/test/base/testing_profile.h +++ b/chrome/test/base/testing_profile.h @@ -263,8 +263,14 @@ class TestingProfile : public Profile { virtual void RequestMIDISysExPermission( int render_process_id, int render_view_id, + int bridge_id, const GURL& requesting_frame, const MIDISysExPermissionCallback& callback) OVERRIDE; + virtual void CancelMIDISysExPermissionRequest( + int render_process_id, + int render_view_id, + int bridge_id, + const GURL& requesting_frame) OVERRIDE; virtual net::URLRequestContextGetter* CreateRequestContextForStoragePartition( const base::FilePath& partition_path, bool in_memory, diff --git a/content/browser/download/download_manager_impl_unittest.cc b/content/browser/download/download_manager_impl_unittest.cc index 0865c04..aecded1 100644 --- a/content/browser/download/download_manager_impl_unittest.cc +++ b/content/browser/download/download_manager_impl_unittest.cc @@ -404,11 +404,17 @@ class MockBrowserContext : public BrowserContext { MOCK_METHOD2(GetMediaRequestContextForStoragePartition, net::URLRequestContextGetter*( const base::FilePath& partition_path, bool in_memory)); - MOCK_METHOD4(RequestMIDISysExPermission, + MOCK_METHOD5(RequestMIDISysExPermission, void(int render_process_id, int render_view_id, + int bridge_id, const GURL& requesting_frame, const MIDISysExPermissionCallback& callback)); + MOCK_METHOD4(CancelMIDISysExPermissionRequest, + void(int render_process_id, + int render_view_id, + int bridge_id, + const GURL& requesting_frame)); MOCK_METHOD0(GetResourceContext, ResourceContext*()); MOCK_METHOD0(GetDownloadManagerDelegate, DownloadManagerDelegate*()); MOCK_METHOD0(GetGeolocationPermissionContext, diff --git a/content/browser/renderer_host/media/midi_dispatcher_host.cc b/content/browser/renderer_host/media/midi_dispatcher_host.cc index 53f5a76..2181dcc 100644 --- a/content/browser/renderer_host/media/midi_dispatcher_host.cc +++ b/content/browser/renderer_host/media/midi_dispatcher_host.cc @@ -29,6 +29,8 @@ bool MIDIDispatcherHost::OnMessageReceived(const IPC::Message& message, IPC_BEGIN_MESSAGE_MAP_EX(MIDIDispatcherHost, message, *message_was_ok) IPC_MESSAGE_HANDLER(MIDIHostMsg_RequestSysExPermission, OnRequestSysExPermission) + IPC_MESSAGE_HANDLER(MIDIHostMsg_CancelSysExPermissionRequest, + OnCancelSysExPermissionRequest) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP_EX() return handled; @@ -36,31 +38,42 @@ bool MIDIDispatcherHost::OnMessageReceived(const IPC::Message& message, void MIDIDispatcherHost::OverrideThreadForMessage( const IPC::Message& message, BrowserThread::ID* thread) { - if (message.type() == MIDIHostMsg_RequestSysExPermission::ID) + if (IPC_MESSAGE_CLASS(message) == MIDIMsgStart) *thread = BrowserThread::UI; } void MIDIDispatcherHost::OnRequestSysExPermission(int render_view_id, - int client_id, + int bridge_id, const GURL& origin) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); browser_context_->RequestMIDISysExPermission( render_process_id_, render_view_id, + bridge_id, origin, base::Bind(&MIDIDispatcherHost::WasSysExPermissionGranted, base::Unretained(this), render_view_id, - client_id)); + bridge_id)); } +void MIDIDispatcherHost::OnCancelSysExPermissionRequest( + int render_view_id, + int bridge_id, + const GURL& requesting_frame) { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + DVLOG(1) << __FUNCTION__ << " " << render_process_id_ << ":" << render_view_id + << ":" << bridge_id; + browser_context_->CancelMIDISysExPermissionRequest( + render_process_id_, render_view_id, bridge_id, requesting_frame); +} void MIDIDispatcherHost::WasSysExPermissionGranted(int render_view_id, - int client_id, + int bridge_id, bool success) { ChildProcessSecurityPolicyImpl::GetInstance()->GrantSendMIDISysExMessage( render_process_id_); - Send(new MIDIMsg_SysExPermissionApproved(render_view_id, client_id, success)); + Send(new MIDIMsg_SysExPermissionApproved(render_view_id, bridge_id, success)); } } // namespace content diff --git a/content/browser/renderer_host/media/midi_dispatcher_host.h b/content/browser/renderer_host/media/midi_dispatcher_host.h index ee86155..068f719 100644 --- a/content/browser/renderer_host/media/midi_dispatcher_host.h +++ b/content/browser/renderer_host/media/midi_dispatcher_host.h @@ -31,10 +31,13 @@ class MIDIDispatcherHost : public BrowserMessageFilter { private: void OnRequestSysExPermission(int render_view_id, - int client_id, + int bridge_id, const GURL& origin); + void OnCancelSysExPermissionRequest(int render_view_id, + int bridge_id, + const GURL& requesting_frame); void WasSysExPermissionGranted(int render_view_id, - int client_id, + int bridge_id, bool success); int render_process_id_; diff --git a/content/common/media/midi_messages.h b/content/common/media/midi_messages.h index bff0241..eced85d 100644 --- a/content/common/media/midi_messages.h +++ b/content/common/media/midi_messages.h @@ -30,6 +30,12 @@ IPC_MESSAGE_CONTROL3(MIDIHostMsg_RequestSysExPermission, int /* client id */, GURL /* origin */) +// Renderer request to browser for canceling a previous permission request. +IPC_MESSAGE_CONTROL3(MIDIHostMsg_CancelSysExPermissionRequest, + int /* render_view_id */, + int /* bridge_id */, + GURL /* GURL of the frame */) + // Messages sent from the browser to the renderer. IPC_MESSAGE_ROUTED2(MIDIMsg_SysExPermissionApproved, diff --git a/content/public/browser/browser_context.h b/content/public/browser/browser_context.h index cbac82f..d6d8950 100644 --- a/content/public/browser/browser_context.h +++ b/content/public/browser/browser_context.h @@ -132,9 +132,17 @@ class CONTENT_EXPORT BrowserContext : public base::SupportsUserData { virtual void RequestMIDISysExPermission( int render_process_id, int render_view_id, + int bridge_id, const GURL& requesting_frame, const MIDISysExPermissionCallback& callback) = 0; + // Cancels a pending MIDI permission request. + virtual void CancelMIDISysExPermissionRequest( + int render_process_id, + int render_view_id, + int bridge_id, + const GURL& requesting_frame) = 0; + // Returns the resource context. virtual ResourceContext* GetResourceContext() = 0; diff --git a/content/public/test/test_browser_context.cc b/content/public/test/test_browser_context.cc index 907f748..f194e7e 100644 --- a/content/public/test/test_browser_context.cc +++ b/content/public/test/test_browser_context.cc @@ -101,12 +101,20 @@ TestBrowserContext::GetMediaRequestContextForStoragePartition( void TestBrowserContext::RequestMIDISysExPermission( int render_process_id, int render_view_id, + int bridge_id, const GURL& requesting_frame, const MIDISysExPermissionCallback& callback) { // Always reject requests for testing. callback.Run(false); } +void TestBrowserContext::CancelMIDISysExPermissionRequest( + int render_process_id, + int render_view_id, + int bridge_id, + const GURL& requesting_frame) { +} + ResourceContext* TestBrowserContext::GetResourceContext() { if (!resource_context_) resource_context_.reset(new MockResourceContext( diff --git a/content/public/test/test_browser_context.h b/content/public/test/test_browser_context.h index 4799180..801e635 100644 --- a/content/public/test/test_browser_context.h +++ b/content/public/test/test_browser_context.h @@ -43,8 +43,14 @@ class TestBrowserContext : public BrowserContext { virtual void RequestMIDISysExPermission( int render_process_id, int render_view_id, + int bridge_id, const GURL& requesting_frame, const MIDISysExPermissionCallback& callback) OVERRIDE; + virtual void CancelMIDISysExPermissionRequest( + int render_process_id, + int render_view_id, + int bridge_id, + const GURL& requesting_frame) OVERRIDE; virtual ResourceContext* GetResourceContext() OVERRIDE; virtual GeolocationPermissionContext* GetGeolocationPermissionContext() OVERRIDE; diff --git a/content/renderer/media/midi_dispatcher.cc b/content/renderer/media/midi_dispatcher.cc index edd57c2..b9aae33 100644 --- a/content/renderer/media/midi_dispatcher.cc +++ b/content/renderer/media/midi_dispatcher.cc @@ -34,11 +34,11 @@ bool MIDIDispatcher::OnMessageReceived(const IPC::Message& message) { void MIDIDispatcher::requestSysExPermission( const WebMIDIPermissionRequest& request) { - int client_id = requests_.Add(new WebMIDIPermissionRequest(request)); + int bridge_id = requests_.Add(new WebMIDIPermissionRequest(request)); WebSecurityOrigin security_origin = request.securityOrigin(); std::string origin = security_origin.toString().utf8(); GURL url(origin); - Send(new MIDIHostMsg_RequestSysExPermission(routing_id(), client_id, url)); + Send(new MIDIHostMsg_RequestSysExPermission(routing_id(), bridge_id, url)); } void MIDIDispatcher::cancelSysExPermissionRequest( @@ -47,19 +47,23 @@ void MIDIDispatcher::cancelSysExPermissionRequest( !it.IsAtEnd(); it.Advance()) { WebMIDIPermissionRequest* value = it.GetCurrentValue(); - if (!value->equals(request)) - continue; - requests_.Remove(it.GetCurrentKey()); + if (value->equals(request)) { + string16 origin = request.securityOrigin().toString(); + Send(new MIDIHostMsg_CancelSysExPermissionRequest( + routing_id(), it.GetCurrentKey(), GURL(origin))); + requests_.Remove(it.GetCurrentKey()); + break; + } } } -void MIDIDispatcher::OnSysExPermissionApproved(int client_id, bool is_allowed) { +void MIDIDispatcher::OnSysExPermissionApproved(int bridge_id, bool is_allowed) { // |request| can be NULL when the request is canceled. - WebMIDIPermissionRequest* request = requests_.Lookup(client_id); + WebMIDIPermissionRequest* request = requests_.Lookup(bridge_id); if (!request) return; request->setIsAllowed(is_allowed); - requests_.Remove(client_id); + requests_.Remove(bridge_id); } } // namespace content diff --git a/content/shell/browser/shell_browser_context.cc b/content/shell/browser/shell_browser_context.cc index c6dbb99..8dee89a 100644 --- a/content/shell/browser/shell_browser_context.cc +++ b/content/shell/browser/shell_browser_context.cc @@ -179,6 +179,7 @@ net::URLRequestContextGetter* void ShellBrowserContext::RequestMIDISysExPermission( int render_process_id, int render_view_id, + int bridge_id, const GURL& requesting_frame, const MIDISysExPermissionCallback& callback) { // Always reject requests for LayoutTests for now. @@ -191,6 +192,13 @@ void ShellBrowserContext::RequestMIDISysExPermission( callback.Run(false); } +void ShellBrowserContext::CancelMIDISysExPermissionRequest( + int render_process_id, + int render_view_id, + int bridge_id, + const GURL& requesting_frame) { +} + net::URLRequestContextGetter* ShellBrowserContext::CreateRequestContextForStoragePartition( const base::FilePath& partition_path, diff --git a/content/shell/browser/shell_browser_context.h b/content/shell/browser/shell_browser_context.h index ec71591..f49fa28 100644 --- a/content/shell/browser/shell_browser_context.h +++ b/content/shell/browser/shell_browser_context.h @@ -46,8 +46,14 @@ class ShellBrowserContext : public BrowserContext { virtual void RequestMIDISysExPermission( int render_process_id, int render_view_id, + int bridge_id, const GURL& requesting_frame, const MIDISysExPermissionCallback& callback) OVERRIDE; + virtual void CancelMIDISysExPermissionRequest( + int render_process_id, + int render_view_id, + int bridge_id, + const GURL& requesting_frame) OVERRIDE; virtual ResourceContext* GetResourceContext() OVERRIDE; virtual GeolocationPermissionContext* GetGeolocationPermissionContext() OVERRIDE; |