1// Copyright 2014 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_GEOLOCATION_GEOLOCATION_PERMISSION_CONTEXT_EXTENSIONS_H_
6#define CHROME_BROWSER_GEOLOCATION_GEOLOCATION_PERMISSION_CONTEXT_EXTENSIONS_H_
7
8#include "base/callback_forward.h"
9#include "base/macros.h"
10
11namespace content {
12class WebContents;
13}
14
15class GURL;
16class PermissionRequestID;
17class Profile;
18
19// Chrome extensions specific portions of GeolocationPermissionContext.
20class GeolocationPermissionContextExtensions {
21 public:
22  explicit GeolocationPermissionContextExtensions(Profile* profile);
23  ~GeolocationPermissionContextExtensions();
24
25  // Returns true if the permission request was handled. In which case,
26  // |permission_set| will be set to true if the permission changed, and the
27  // permission has been set to |new_permission|.
28  bool RequestPermission(content::WebContents* web_contents,
29                         const PermissionRequestID& request_id,
30                         int bridge_id,
31                         const GURL& requesting_frame,
32                         bool user_gesture,
33                         base::Callback<void(bool)> callback,
34                         bool* permission_set,
35                         bool* new_permission);
36
37  // Returns true if the cancellation request was handled.
38  bool CancelPermissionRequest(content::WebContents* web_contents,
39                               int bridge_id);
40
41 private:
42  Profile* profile_;
43
44  DISALLOW_COPY_AND_ASSIGN(GeolocationPermissionContextExtensions);
45};
46
47#endif  // CHROME_BROWSER_GEOLOCATION_GEOLOCATION_PERMISSION_CONTEXT_EXTENSIONS_H_
48