Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / modules / netinfo / WorkerNavigatorNetworkInformation.cpp
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/netinfo/WorkerNavigatorNetworkInformation.h"
7
8 #include "core/workers/WorkerNavigator.h"
9 #include "modules/netinfo/NetworkInformation.h"
10
11 namespace blink {
12
13 WorkerNavigatorNetworkInformation::WorkerNavigatorNetworkInformation(WorkerNavigator& navigator, ExecutionContext* context)
14 {
15 }
16
17 WorkerNavigatorNetworkInformation::~WorkerNavigatorNetworkInformation()
18 {
19 }
20
21 WorkerNavigatorNetworkInformation& WorkerNavigatorNetworkInformation::from(WorkerNavigator& navigator, ExecutionContext* context)
22 {
23     WorkerNavigatorNetworkInformation* supplement = toWorkerNavigatorNetworkInformation(navigator, context);
24     if (!supplement) {
25         supplement = new WorkerNavigatorNetworkInformation(navigator, context);
26         provideTo(navigator, supplementName(), adoptPtrWillBeNoop(supplement));
27     }
28     return *supplement;
29 }
30
31 WorkerNavigatorNetworkInformation* WorkerNavigatorNetworkInformation::toWorkerNavigatorNetworkInformation(WorkerNavigator& navigator, ExecutionContext* context)
32 {
33     return static_cast<WorkerNavigatorNetworkInformation*>(WillBeHeapSupplement<WorkerNavigator>::from(navigator, supplementName()));
34 }
35
36 const char* WorkerNavigatorNetworkInformation::supplementName()
37 {
38     return "WorkerNavigatorNetworkInformation";
39 }
40
41 NetworkInformation* WorkerNavigatorNetworkInformation::connection(ExecutionContext* context, WorkerNavigator& navigator)
42 {
43     return WorkerNavigatorNetworkInformation::from(navigator, context).connection(context);
44 }
45
46 void WorkerNavigatorNetworkInformation::trace(Visitor* visitor)
47 {
48     visitor->trace(m_connection);
49     WillBeHeapSupplement<WorkerNavigator>::trace(visitor);
50 }
51
52 NetworkInformation* WorkerNavigatorNetworkInformation::connection(ExecutionContext* context)
53 {
54     ASSERT(context);
55     if (!m_connection)
56         m_connection = NetworkInformation::create(context);
57     return m_connection.get();
58 }
59
60 } // namespace blink