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 64