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:
virtual void startListening() OVERRIDE;
virtual void stopListening() OVERRIDE;
RefPtr<BatteryStatus> m_batteryStatus;
RefPtrWillBePersistent<BatteryStatus> m_batteryStatus;
};
}
......
......@@ -76,11 +76,13 @@ void BatteryManager::didUpdateData()
ASSERT(RuntimeEnabledFeatures::batteryStatusEnabled());
ASSERT(m_state != NotStarted);
RefPtr<BatteryStatus> oldStatus = m_batteryStatus;
RefPtrWillBeRawPtr<BatteryStatus> oldStatus = m_batteryStatus;
m_batteryStatus = BatteryDispatcher::instance().latestData();
#if !ENABLE(OILPAN)
// BatteryDispatcher also holds a reference to m_batteryStatus.
ASSERT(m_batteryStatus->refCount() > 1);
#endif
if (m_state == Pending) {
ASSERT(m_resolver);
......@@ -138,4 +140,10 @@ void BatteryManager::stop()
stopUpdating();
}
void BatteryManager::trace(Visitor* visitor)
{
visitor->trace(m_batteryStatus);
EventTargetWithInlineData::trace(visitor);
}
} // namespace WebCore
......@@ -53,6 +53,8 @@ public:
virtual void resume() OVERRIDE;
virtual void stop() OVERRIDE;
virtual void trace(Visitor*) OVERRIDE;
private:
enum State {
NotStarted,
......@@ -63,11 +65,10 @@ private:
explicit BatteryManager(ExecutionContext*);
RefPtr<ScriptPromiseResolverWithContext> m_resolver;
RefPtr<BatteryStatus> m_batteryStatus;
RefPtrWillBeMember<BatteryStatus> m_batteryStatus;
State m_state;
};
}
#endif // BatteryManager_h
......@@ -9,14 +9,14 @@
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()
......@@ -36,4 +36,3 @@ BatteryStatus::BatteryStatus(bool charging, double chargingTime, double discharg
}
} // namespace WebCore
......@@ -5,21 +5,24 @@
#ifndef BatteryStatus_h
#define BatteryStatus_h
#include "platform/heap/Handle.h"
#include "wtf/PassRefPtr.h"
#include "wtf/RefCounted.h"
namespace WebCore {
class BatteryStatus : public RefCounted<BatteryStatus> {
class BatteryStatus FINAL : public RefCountedWillBeGarbageCollected<BatteryStatus> {
public:
static PassRefPtr<BatteryStatus> create();
static PassRefPtr<BatteryStatus> create(bool charging, double chargingTime, double dischargingTime, double level);
static PassRefPtrWillBeRawPtr<BatteryStatus> create();
static PassRefPtrWillBeRawPtr<BatteryStatus> create(bool charging, double chargingTime, double dischargingTime, double level);
bool charging() const { return m_charging; }
double chargingTime() const { return m_chargingTime; }
double dischargingTime() const { return m_dischargingTime; }
double level() const { return m_level; }
void trace(Visitor*) { }
private:
BatteryStatus();
BatteryStatus(bool charging, double chargingTime, double dischargingTime, double level);
......@@ -33,4 +36,3 @@ private:
} // namespace WebCore
#endif // BatteryStatus_h
......@@ -34,7 +34,6 @@
#include "core/dom/ExecutionContext.h"
#include "core/dom/ExecutionContextTask.h"
#include "wtf/PassOwnPtr.h"
#include "wtf/RefCounted.h"
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