1f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)// found in the LICENSE file. 4f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 5f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#include "config.h" 6f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#include "modules/netinfo/NavigatorNetworkInformation.h" 7f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)#include "core/frame/LocalDOMWindow.h" 9f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#include "core/frame/LocalFrame.h" 10f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#include "core/frame/Navigator.h" 11f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#include "modules/netinfo/NetworkInformation.h" 12f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 13c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 14f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 15f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)NavigatorNetworkInformation::NavigatorNetworkInformation(Navigator& navigator) 16f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) : DOMWindowProperty(navigator.frame()) 17f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles){ 18f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)} 19f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciDEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(NavigatorNetworkInformation); 21f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 22f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)NavigatorNetworkInformation& NavigatorNetworkInformation::from(Navigator& navigator) 23f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles){ 24f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) NavigatorNetworkInformation* supplement = toNavigatorNetworkInformation(navigator); 25f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) if (!supplement) { 26f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) supplement = new NavigatorNetworkInformation(navigator); 27f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) provideTo(navigator, supplementName(), adoptPtrWillBeNoop(supplement)); 28f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) } 29f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) return *supplement; 30f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)} 31f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 32f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)NavigatorNetworkInformation* NavigatorNetworkInformation::toNavigatorNetworkInformation(Navigator& navigator) 33f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles){ 34f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) return static_cast<NavigatorNetworkInformation*>(WillBeHeapSupplement<Navigator>::from(navigator, supplementName())); 35f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)} 36f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 37f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)const char* NavigatorNetworkInformation::supplementName() 38f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles){ 39f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) return "NavigatorNetworkInformation"; 40f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)} 41f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 42f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)NetworkInformation* NavigatorNetworkInformation::connection(Navigator& navigator) 43f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles){ 44f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) return NavigatorNetworkInformation::from(navigator).connection(); 45f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)} 46f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 47f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)NetworkInformation* NavigatorNetworkInformation::connection() 48f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles){ 49f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) if (!m_connection && frame()) { 50f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) ASSERT(frame()->domWindow()); 51f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) m_connection = NetworkInformation::create(frame()->domWindow()->executionContext()); 52f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) } 53f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) return m_connection.get(); 54f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)} 55f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 56f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)void NavigatorNetworkInformation::trace(Visitor* visitor) 57f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles){ 58f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) visitor->trace(m_connection); 59f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) WillBeHeapSupplement<Navigator>::trace(visitor); 607242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci DOMWindowProperty::trace(visitor); 61f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)} 62f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 63c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 64