IndexedDBFactory now ForceCloses databases.
[chromium-blink-merge.git] / content / renderer / media / midi_dispatcher.h
blob70f8125bdd236ac227d94cdb377fbd3c61e17872
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CONTENT_RENDERER_MEDIA_MIDI_DISPATCHER_H_
6 #define CONTENT_RENDERER_MEDIA_MIDI_DISPATCHER_H_
8 #include "base/id_map.h"
9 #include "content/public/renderer/render_view_observer.h"
10 #include "third_party/WebKit/public/web/WebMIDIClient.h"
12 namespace blink {
13 class WebMIDIPermissionRequest;
16 namespace content {
18 class RenderViewImpl;
20 // MIDIDispatcher implements WebMIDIClient to handle permissions for using
21 // system exclusive messages.
22 // It works as RenderViewObserver to handle IPC messages between
23 // MIDIDispatcherHost owned by RenderViewHost since permissions are managed in
24 // the browser process.
25 class MIDIDispatcher : public RenderViewObserver,
26 public blink::WebMIDIClient {
27 public:
28 explicit MIDIDispatcher(RenderViewImpl* render_view);
29 virtual ~MIDIDispatcher();
31 private:
32 // RenderView::Observer implementation.
33 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
35 // blink::WebMIDIClient implementation.
36 virtual void requestSysExPermission(
37 const blink::WebMIDIPermissionRequest& request) OVERRIDE;
38 virtual void cancelSysExPermissionRequest(
39 const blink::WebMIDIPermissionRequest& request) OVERRIDE;
41 // Permission for using system exclusive messages has been set.
42 void OnSysExPermissionApproved(int client_id, bool is_allowed);
44 // Each WebMIDIPermissionRequest object is valid until
45 // cancelSysExPermissionRequest() is called with the object, or used to call
46 // WebMIDIPermissionRequest::setIsAllowed().
47 IDMap<blink::WebMIDIPermissionRequest> requests_;
49 DISALLOW_COPY_AND_ASSIGN(MIDIDispatcher);
52 } // namespace content
54 #endif // CONTENT_RENDERER_MEDIA_MIDI_DISPATCHER_H_