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