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