Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / modules / netinfo / NetworkInformation.h
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 #ifndef NetworkInformation_h
6 #define NetworkInformation_h
7
8 #include "core/dom/ActiveDOMObject.h"
9 #include "core/events/EventTarget.h"
10 #include "core/page/NetworkStateNotifier.h"
11 #include "public/platform/WebConnectionType.h"
12
13 namespace blink {
14
15 class ExecutionContext;
16
17 class NetworkInformation final
18     : public RefCountedGarbageCollectedWillBeGarbageCollectedFinalized<NetworkInformation>
19     , public ActiveDOMObject
20     , public EventTargetWithInlineData
21     , public NetworkStateNotifier::NetworkStateObserver {
22     DEFINE_EVENT_TARGET_REFCOUNTING_WILL_BE_REMOVED(RefCountedGarbageCollected<NetworkInformation>);
23     DEFINE_WRAPPERTYPEINFO();
24     WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(NetworkInformation);
25 public:
26     static NetworkInformation* create(ExecutionContext*);
27     virtual ~NetworkInformation();
28
29     String type() const;
30
31     virtual void connectionTypeChange(WebConnectionType) override;
32
33     // EventTarget overrides.
34     virtual const AtomicString& interfaceName() const override;
35     virtual ExecutionContext* executionContext() const override;
36     virtual bool addEventListener(const AtomicString& eventType, PassRefPtr<EventListener>, bool useCapture = false) override;
37     virtual bool removeEventListener(const AtomicString& eventType, PassRefPtr<EventListener>, bool useCapture = false) override;
38     virtual void removeAllEventListeners() override;
39
40     // ActiveDOMObject overrides.
41     virtual bool hasPendingActivity() const override;
42     virtual void stop() override;
43
44     DEFINE_ATTRIBUTE_EVENT_LISTENER(typechange);
45
46 private:
47     explicit NetworkInformation(ExecutionContext*);
48     void startObserving();
49     void stopObserving();
50
51     // Touched only on context thread.
52     WebConnectionType m_type;
53
54     // Whether this object is listening for events from NetworkStateNotifier.
55     bool m_observing;
56
57     // Whether ActiveDOMObject::stop has been called.
58     bool m_contextStopped;
59 };
60
61 } // namespace blink
62
63 #endif // NetworkInformation_h