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.
6 #include "modules/netinfo/NavigatorNetworkInformation.h"
8 #include "core/frame/LocalDOMWindow.h"
9 #include "core/frame/LocalFrame.h"
10 #include "core/frame/Navigator.h"
11 #include "modules/netinfo/NetworkInformation.h"
15 NavigatorNetworkInformation::NavigatorNetworkInformation(Navigator& navigator)
16 : DOMWindowProperty(navigator.frame())
20 NavigatorNetworkInformation::~NavigatorNetworkInformation()
24 NavigatorNetworkInformation& NavigatorNetworkInformation::from(Navigator& navigator)
26 NavigatorNetworkInformation* supplement = toNavigatorNetworkInformation(navigator);
28 supplement = new NavigatorNetworkInformation(navigator);
29 provideTo(navigator, supplementName(), adoptPtrWillBeNoop(supplement));
34 NavigatorNetworkInformation* NavigatorNetworkInformation::toNavigatorNetworkInformation(Navigator& navigator)
36 return static_cast<NavigatorNetworkInformation*>(WillBeHeapSupplement<Navigator>::from(navigator, supplementName()));
39 const char* NavigatorNetworkInformation::supplementName()
41 return "NavigatorNetworkInformation";
44 NetworkInformation* NavigatorNetworkInformation::connection(Navigator& navigator)
46 return NavigatorNetworkInformation::from(navigator).connection();
49 NetworkInformation* NavigatorNetworkInformation::connection()
51 if (!m_connection && frame()) {
52 ASSERT(frame()->domWindow());
53 m_connection = NetworkInformation::create(frame()->domWindow()->executionContext());
55 return m_connection.get();
58 void NavigatorNetworkInformation::trace(Visitor* visitor)
60 visitor->trace(m_connection);
61 WillBeHeapSupplement<Navigator>::trace(visitor);