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#include "modules/push_messaging/NavigatorPushManager.h" 7 8#include "core/frame/Navigator.h" 9#include "modules/push_messaging/PushManager.h" 10 11namespace blink { 12 13NavigatorPushManager::NavigatorPushManager() 14{ 15} 16 17NavigatorPushManager::~NavigatorPushManager() 18{ 19} 20 21const char* NavigatorPushManager::supplementName() 22{ 23 return "NavigatorPushManager"; 24} 25 26NavigatorPushManager& NavigatorPushManager::from(Navigator& navigator) 27{ 28 NavigatorPushManager* supplement = static_cast<NavigatorPushManager*>(WillBeHeapSupplement<Navigator>::from(navigator, supplementName())); 29 if (!supplement) { 30 supplement = new NavigatorPushManager(); 31 provideTo(navigator, supplementName(), adoptPtrWillBeNoop(supplement)); 32 } 33 return *supplement; 34} 35 36PushManager* NavigatorPushManager::push(Navigator& navigator) 37{ 38 return NavigatorPushManager::from(navigator).pushManager(); 39} 40 41PushManager* NavigatorPushManager::pushManager() 42{ 43 if (!m_pushManager) 44 m_pushManager = PushManager::create(); 45 return m_pushManager.get(); 46} 47 48void NavigatorPushManager::trace(Visitor* visitor) 49{ 50 visitor->trace(m_pushManager); 51 WillBeHeapSupplement<Navigator>::trace(visitor); 52} 53 54} // namespace blink 55