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