Home | History | Annotate | Download | only in netinfo
      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