Commit bb0339b9 authored by sigbjornf@opera.com's avatar sigbjornf@opera.com

Oilpan: move BatteryStatus to the heap.

R=haraken@chromium.org,timvolodine@chromium.org
BUG=340522

Review URL: https://codereview.chromium.org/341053002

git-svn-id: svn://svn.chromium.org/blink/trunk@176525 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent cabd6c5b
...@@ -33,7 +33,7 @@ private: ...@@ -33,7 +33,7 @@ private:
virtual void startListening() OVERRIDE; virtual void startListening() OVERRIDE;
virtual void stopListening() OVERRIDE; virtual void stopListening() OVERRIDE;
RefPtr<BatteryStatus> m_batteryStatus; RefPtrWillBePersistent<BatteryStatus> m_batteryStatus;
}; };
} }
......
...@@ -76,11 +76,13 @@ void BatteryManager::didUpdateData() ...@@ -76,11 +76,13 @@ void BatteryManager::didUpdateData()
ASSERT(RuntimeEnabledFeatures::batteryStatusEnabled()); ASSERT(RuntimeEnabledFeatures::batteryStatusEnabled());
ASSERT(m_state != NotStarted); ASSERT(m_state != NotStarted);
RefPtr<BatteryStatus> oldStatus = m_batteryStatus; RefPtrWillBeRawPtr<BatteryStatus> oldStatus = m_batteryStatus;
m_batteryStatus = BatteryDispatcher::instance().latestData(); m_batteryStatus = BatteryDispatcher::instance().latestData();
#if !ENABLE(OILPAN)
// BatteryDispatcher also holds a reference to m_batteryStatus. // BatteryDispatcher also holds a reference to m_batteryStatus.
ASSERT(m_batteryStatus->refCount() > 1); ASSERT(m_batteryStatus->refCount() > 1);
#endif
if (m_state == Pending) { if (m_state == Pending) {
ASSERT(m_resolver); ASSERT(m_resolver);
...@@ -138,4 +140,10 @@ void BatteryManager::stop() ...@@ -138,4 +140,10 @@ void BatteryManager::stop()
stopUpdating(); stopUpdating();
} }
void BatteryManager::trace(Visitor* visitor)
{
visitor->trace(m_batteryStatus);
EventTargetWithInlineData::trace(visitor);
}
} // namespace WebCore } // namespace WebCore
...@@ -53,6 +53,8 @@ public: ...@@ -53,6 +53,8 @@ public:
virtual void resume() OVERRIDE; virtual void resume() OVERRIDE;
virtual void stop() OVERRIDE; virtual void stop() OVERRIDE;
virtual void trace(Visitor*) OVERRIDE;
private: private:
enum State { enum State {
NotStarted, NotStarted,
...@@ -63,11 +65,10 @@ private: ...@@ -63,11 +65,10 @@ private:
explicit BatteryManager(ExecutionContext*); explicit BatteryManager(ExecutionContext*);
RefPtr<ScriptPromiseResolverWithContext> m_resolver; RefPtr<ScriptPromiseResolverWithContext> m_resolver;
RefPtr<BatteryStatus> m_batteryStatus; RefPtrWillBeMember<BatteryStatus> m_batteryStatus;
State m_state; State m_state;
}; };
} }
#endif // BatteryManager_h #endif // BatteryManager_h
...@@ -9,14 +9,14 @@ ...@@ -9,14 +9,14 @@
namespace WebCore { namespace WebCore {
PassRefPtr<BatteryStatus> BatteryStatus::create() PassRefPtrWillBeRawPtr<BatteryStatus> BatteryStatus::create()
{ {
return adoptRef(new BatteryStatus); return adoptRefWillBeNoop(new BatteryStatus);
} }
PassRefPtr<BatteryStatus> BatteryStatus::create(bool charging, double chargingTime, double dischargingTime, double level) PassRefPtrWillBeRawPtr<BatteryStatus> BatteryStatus::create(bool charging, double chargingTime, double dischargingTime, double level)
{ {
return adoptRef(new BatteryStatus(charging, chargingTime, dischargingTime, level)); return adoptRefWillBeNoop(new BatteryStatus(charging, chargingTime, dischargingTime, level));
} }
BatteryStatus::BatteryStatus() BatteryStatus::BatteryStatus()
...@@ -36,4 +36,3 @@ BatteryStatus::BatteryStatus(bool charging, double chargingTime, double discharg ...@@ -36,4 +36,3 @@ BatteryStatus::BatteryStatus(bool charging, double chargingTime, double discharg
} }
} // namespace WebCore } // namespace WebCore
...@@ -5,21 +5,24 @@ ...@@ -5,21 +5,24 @@
#ifndef BatteryStatus_h #ifndef BatteryStatus_h
#define BatteryStatus_h #define BatteryStatus_h
#include "platform/heap/Handle.h"
#include "wtf/PassRefPtr.h" #include "wtf/PassRefPtr.h"
#include "wtf/RefCounted.h" #include "wtf/RefCounted.h"
namespace WebCore { namespace WebCore {
class BatteryStatus : public RefCounted<BatteryStatus> { class BatteryStatus FINAL : public RefCountedWillBeGarbageCollected<BatteryStatus> {
public: public:
static PassRefPtr<BatteryStatus> create(); static PassRefPtrWillBeRawPtr<BatteryStatus> create();
static PassRefPtr<BatteryStatus> create(bool charging, double chargingTime, double dischargingTime, double level); static PassRefPtrWillBeRawPtr<BatteryStatus> create(bool charging, double chargingTime, double dischargingTime, double level);
bool charging() const { return m_charging; } bool charging() const { return m_charging; }
double chargingTime() const { return m_chargingTime; } double chargingTime() const { return m_chargingTime; }
double dischargingTime() const { return m_dischargingTime; } double dischargingTime() const { return m_dischargingTime; }
double level() const { return m_level; } double level() const { return m_level; }
void trace(Visitor*) { }
private: private:
BatteryStatus(); BatteryStatus();
BatteryStatus(bool charging, double chargingTime, double dischargingTime, double level); BatteryStatus(bool charging, double chargingTime, double dischargingTime, double level);
...@@ -33,4 +36,3 @@ private: ...@@ -33,4 +36,3 @@ private:
} // namespace WebCore } // namespace WebCore
#endif // BatteryStatus_h #endif // BatteryStatus_h
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
#include "core/dom/ExecutionContext.h" #include "core/dom/ExecutionContext.h"
#include "core/dom/ExecutionContextTask.h" #include "core/dom/ExecutionContextTask.h"
#include "wtf/PassOwnPtr.h" #include "wtf/PassOwnPtr.h"
#include "wtf/RefCounted.h"
namespace WebCore { namespace WebCore {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment