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)#include "config.h"
6d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
7d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "public/platform/WebPermissionCallbacks.h"
8d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
9d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "platform/PermissionCallbacks.h"
10d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
11d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)namespace blink {
12d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
13d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class WebPermissionCallbacksPrivate : public RefCounted<WebPermissionCallbacksPrivate> {
14d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)public:
15d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    static PassRefPtr<WebPermissionCallbacksPrivate> create(const PassOwnPtr<PermissionCallbacks>& callbacks)
16d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    {
17d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        return adoptRef(new WebPermissionCallbacksPrivate(callbacks));
18d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    }
19d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
20d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    PermissionCallbacks* callbacks() { return m_callbacks.get(); }
21d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
22d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)private:
23d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    WebPermissionCallbacksPrivate(const PassOwnPtr<PermissionCallbacks>& callbacks) : m_callbacks(callbacks) { }
24d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    OwnPtr<PermissionCallbacks> m_callbacks;
25d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)};
26d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
27d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)WebPermissionCallbacks::WebPermissionCallbacks(const PassOwnPtr<PermissionCallbacks>& callbacks)
28d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){
29d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    m_private = WebPermissionCallbacksPrivate::create(callbacks);
30d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}
31d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
32d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void WebPermissionCallbacks::reset()
33d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){
34d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    m_private.reset();
35d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}
36d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
37d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void WebPermissionCallbacks::assign(const WebPermissionCallbacks& other)
38d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){
39d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    m_private = other.m_private;
40d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}
41d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
42d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void WebPermissionCallbacks::doAllow()
43d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){
44d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    ASSERT(!m_private.isNull());
45d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    m_private->callbacks()->onAllowed();
46d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    m_private.reset();
47d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}
48d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
49d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void WebPermissionCallbacks::doDeny()
50d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){
51d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    ASSERT(!m_private.isNull());
52d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    m_private->callbacks()->onDenied();
53d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    m_private.reset();
54d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}
55d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
56d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} // namespace blink
57