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

Side by Side Diff: chrome/browser/media/chrome_midi_permission_context.h

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, 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
(Empty)
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.
4
5 #ifndef CHROME_BROWSER_MEDIA_CHROME_MIDI_PERMISSION_CONTEXT_H_
6 #define CHROME_BROWSER_MEDIA_CHROME_MIDI_PERMISSION_CONTEXT_H_
7
8 #include "base/memory/scoped_ptr.h"
9 #include "components/browser_context_keyed_service/browser_context_keyed_service .h"
10 #include "content/public/browser/browser_context.h"
11
12 class GURL;
13 class PermissionQueueController;
14 class PermissionRequestID;
15 class Profile;
16
17 // This class manages MIDI permissions flow. Used on the UI thread.
18 class ChromeMIDIPermissionContext : public BrowserContextKeyedService {
19 public:
20 explicit ChromeMIDIPermissionContext(Profile* profile);
21 virtual ~ChromeMIDIPermissionContext();
22
23 // BrowserContextKeyedService methods:
24 virtual void Shutdown() OVERRIDE;
25
26 // Request to ask users permission about MIDI.
27 void RequestMIDISysExPermission(
28 int render_process_id,
29 int render_view_id,
30 const GURL& requesting_frame,
31 const content::BrowserContext::MIDISysExPermissionCallback& callback);
32
33 private:
34 // Decide whether the permission should be granted.
35 // Calls PermissionDecided if permission can be decided non-interactively,
36 // or NotifyPermissionSet if permission decided by presenting an infobar.
37 void DecidePermission(
38 const PermissionRequestID& id,
39 const GURL& requesting_frame,
40 const GURL& embedder,
41 const content::BrowserContext::MIDISysExPermissionCallback& callback);
42
43 // Called when permission is granted without interactively asking the user.
44 void PermissionDecided(
45 const PermissionRequestID& id,
46 const GURL& requesting_frame,
47 const GURL& embedder,
48 const content::BrowserContext::MIDISysExPermissionCallback& callback,
49 bool allowed);
50
51 // Called when the permission decision is made. It may be by the
52 // InfoBarDelegate to notify permission has been set.
53 void NotifyPermissionSet(
54 const PermissionRequestID& id,
55 const GURL& requesting_frame,
56 const content::BrowserContext::MIDISysExPermissionCallback& callback,
57 bool allowed);
58
59 // Return an instance of the infobar queue controller, creating it if needed.
60 PermissionQueueController* GetQueueController();
61
62 Profile* const profile_;
63 bool shutting_down_;
64 scoped_ptr<PermissionQueueController> permission_queue_controller_;
65
66 DISALLOW_COPY_AND_ASSIGN(ChromeMIDIPermissionContext);
67 };
68
69 #endif // CHROME_BROWSER_MEDIA_CHROME_MIDI_PERMISSION_CONTEXT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698