1d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// found in the LICENSE file.
4d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
5d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#ifndef WebPermissionCallbacks_h
6d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define WebPermissionCallbacks_h
7d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
8d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "WebPrivatePtr.h"
9d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
10d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)namespace WTF { template <typename T> class PassOwnPtr; }
11d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
12d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)namespace blink {
13d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
14e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)class PermissionCallbacks;
15d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class WebPermissionCallbacksPrivate;
16d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
17d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class WebPermissionCallbacks {
18d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)public:
19d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    ~WebPermissionCallbacks() { reset(); }
20d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    WebPermissionCallbacks() { }
21d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    WebPermissionCallbacks(const WebPermissionCallbacks& c) { assign(c); }
22d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    WebPermissionCallbacks& operator=(const WebPermissionCallbacks& c)
23d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    {
24d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        assign(c);
25d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        return *this;
26d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    }
27d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
28d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    BLINK_PLATFORM_EXPORT void reset();
29d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    BLINK_PLATFORM_EXPORT void assign(const WebPermissionCallbacks&);
30d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
31d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#if INSIDE_BLINK
32e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    BLINK_PLATFORM_EXPORT WebPermissionCallbacks(const WTF::PassOwnPtr<PermissionCallbacks>&);
33d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#endif
34d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
35d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    BLINK_PLATFORM_EXPORT void doAllow();
36d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    BLINK_PLATFORM_EXPORT void doDeny();
37d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
38d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)private:
39d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    WebPrivatePtr<WebPermissionCallbacksPrivate> m_private;
40d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)};
41d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
42d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} // namespace blink
43d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
44d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#endif
45