Battery Status API: add plumbing for multi-platform support.

Make the battery_status_manager generic for all platforms.
Currently there is an implementation only for the android
platform.

BUG=122593,360068

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@270124 0039d316-1c4b-4281-b951-d872f2087c98
parent c774e1d7
......@@ -31,6 +31,7 @@ include_rules = [
# No inclusion of WebKit from the browser, other than strictly enum/POD,
# header-only types, and some selected common code.
"-third_party/WebKit",
"+third_party/WebKit/public/platform/WebBatteryStatus.h",
"+third_party/WebKit/public/platform/WebCursorInfo.h",
"+third_party/WebKit/public/platform/WebGamepad.h",
"+third_party/WebKit/public/platform/WebGamepads.h",
......
......@@ -23,7 +23,7 @@
#include "content/browser/android/surface_texture_peer_browser_impl.h"
#include "content/browser/android/tracing_controller_android.h"
#include "content/browser/android/web_contents_observer_android.h"
#include "content/browser/battery_status/battery_status_manager_android.h"
#include "content/browser/battery_status/battery_status_manager.h"
#include "content/browser/device_sensors/sensor_manager_android.h"
#include "content/browser/frame_host/navigation_controller_android.h"
#include "content/browser/geolocation/location_api_adapter_android.h"
......@@ -46,8 +46,8 @@ namespace {
base::android::RegistrationMethod kContentRegisteredMethods[] = {
{"AndroidLocationApiAdapter",
content::AndroidLocationApiAdapter::RegisterGeolocationService},
{"BatteryStatusManagerAndroid",
content::BatteryStatusManagerAndroid::Register},
{"BatteryStatusManager",
content::BatteryStatusManager::Register},
{"BrowserAccessibilityManager",
content::RegisterBrowserAccessibilityManager},
{"BrowserStartupController", content::RegisterBrowserStartupController},
......
......@@ -2,39 +2,53 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_BATTERY_STATUS_BATTERY_STATUS_MANAGER_ANDROID_H_
#define CHROME_BROWSER_BATTERY_STATUS_BATTERY_STATUS_MANAGER_ANDROID_H_
#ifndef CHROME_BROWSER_BATTERY_STATUS_BATTERY_STATUS_MANAGER_H_
#define CHROME_BROWSER_BATTERY_STATUS_BATTERY_STATUS_MANAGER_H_
#include "build/build_config.h"
#if defined(OS_ANDROID)
#include "base/android/scoped_java_ref.h"
#endif
#include "content/browser/battery_status/battery_status_update_callback.h"
#include "content/common/content_export.h"
namespace content {
// Android implementation of Battery Status API.
class CONTENT_EXPORT BatteryStatusManagerAndroid {
// Platform specific manager class for fetching battery status data.
class CONTENT_EXPORT BatteryStatusManager {
public:
explicit BatteryStatusManager(const BatteryStatusUpdateCallback& callback);
virtual ~BatteryStatusManager();
// Start listening for battery status changes. New updates are signalled
// by invoking the callback provided at construction time.
bool StartListeningBatteryChange();
// Stop listenting for battery status changes.
void StopListeningBatteryChange();
#if defined(OS_ANDROID)
// Must be called at startup.
static bool Register(JNIEnv* env);
// Called from Java via JNI.
void GotBatteryStatus(JNIEnv*, jobject, jboolean charging,
jdouble chargingTime, jdouble dischargingTime,
jdouble charging_time, jdouble discharging_time,
jdouble level);
bool StartListeningBatteryChange();
void StopListeningBatteryChange();
protected:
BatteryStatusManagerAndroid();
virtual ~BatteryStatusManagerAndroid();
#endif
private:
#if defined(OS_ANDROID)
// Java provider of battery status info.
base::android::ScopedJavaGlobalRef<jobject> j_manager_;
#endif
BatteryStatusUpdateCallback callback_;
DISALLOW_COPY_AND_ASSIGN(BatteryStatusManagerAndroid);
DISALLOW_COPY_AND_ASSIGN(BatteryStatusManager);
};
} // namespace content
#endif // CHROME_BROWSER_BATTERY_STATUS_BATTERY_STATUS_MANAGER_ANDROID_H_
#endif // CHROME_BROWSER_BATTERY_STATUS_BATTERY_STATUS_MANAGER_H_
......@@ -2,9 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/browser/battery_status/battery_status_manager_android.h"
#include <string.h>
#include "content/browser/battery_status/battery_status_manager.h"
#include "base/android/jni_android.h"
#include "jni/BatteryStatusManager_jni.h"
......@@ -13,33 +11,39 @@ using base::android::AttachCurrentThread;
namespace content {
BatteryStatusManagerAndroid::BatteryStatusManagerAndroid() {
BatteryStatusManager::BatteryStatusManager(
const BatteryStatusUpdateCallback& callback) : callback_(callback) {
j_manager_.Reset(
Java_BatteryStatusManager_getInstance(
AttachCurrentThread(), base::android::GetApplicationContext()));
}
BatteryStatusManagerAndroid::~BatteryStatusManagerAndroid() {
BatteryStatusManager::~BatteryStatusManager() {
StopListeningBatteryChange();
}
bool BatteryStatusManagerAndroid::Register(JNIEnv* env) {
bool BatteryStatusManager::Register(JNIEnv* env) {
return RegisterNativesImpl(env);
}
void BatteryStatusManagerAndroid::GotBatteryStatus(JNIEnv*, jobject,
jboolean charging, jdouble chargingTime, jdouble dischargingTime,
void BatteryStatusManager::GotBatteryStatus(JNIEnv*, jobject,
jboolean charging, jdouble charging_time, jdouble discharging_time,
jdouble level) {
NOTIMPLEMENTED();
blink::WebBatteryStatus status;
status.charging = charging;
status.chargingTime = charging_time;
status.dischargingTime = discharging_time;
status.level = level;
callback_.Run(status);
}
bool BatteryStatusManagerAndroid::StartListeningBatteryChange() {
bool BatteryStatusManager::StartListeningBatteryChange() {
return Java_BatteryStatusManager_start(
AttachCurrentThread(), j_manager_.obj(),
reinterpret_cast<intptr_t>(this));
}
void BatteryStatusManagerAndroid::StopListeningBatteryChange() {
void BatteryStatusManager::StopListeningBatteryChange() {
Java_BatteryStatusManager_stop(
AttachCurrentThread(), j_manager_.obj());
}
......
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/browser/battery_status/battery_status_manager.h"
#include "base/logging.h"
namespace content {
BatteryStatusManager::BatteryStatusManager(
const BatteryStatusUpdateCallback& callback) : callback_(callback) {
}
BatteryStatusManager::~BatteryStatusManager() {
}
bool BatteryStatusManager::StartListeningBatteryChange() {
NOTIMPLEMENTED();
return false;
}
void BatteryStatusManager::StopListeningBatteryChange() {
NOTIMPLEMENTED();
}
} // namespace content
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CONTENT_BROWSER_BATTERY_STATUS_BATTERY_STATUS_UPDATE_CALLBACK_H_
#define CONTENT_BROWSER_BATTERY_STATUS_BATTERY_STATUS_UPDATE_CALLBACK_H_
#include "base/callback.h"
#include "third_party/WebKit/public/platform/WebBatteryStatus.h"
namespace content {
typedef base::Callback<void(const blink::WebBatteryStatus&)>
BatteryStatusUpdateCallback;
} // namespace content
#endif // CONTENT_BROWSER_BATTERY_STATUS_BATTERY_STATUS_UPDATE_CALLBACK_H_
......@@ -314,7 +314,9 @@
'browser/appcache/view_appcache_internals_job.h',
'browser/appcache/view_appcache_internals_job.cc',
'browser/battery_status/battery_status_manager_android.cc',
'browser/battery_status/battery_status_manager_android.h',
'browser/battery_status/battery_status_manager_default.cc',
'browser/battery_status/battery_status_manager.h',
'browser/battery_status/battery_status_update_callback.h',
'browser/browser_child_process_host_impl.cc',
'browser/browser_child_process_host_impl.h',
'browser/browser_context.cc',
......@@ -1597,6 +1599,7 @@
],
},
'sources/': [
['exclude', '^browser/battery_status/battery_status_manager_default.cc$'],
['exclude', '^browser/device_sensors/data_fetcher_shared_memory_default.cc$'],
['exclude', '^browser/geolocation/network_location_provider\\.(cc|h)$'],
['exclude', '^browser/geolocation/network_location_request\\.(cc|h)$'],
......
......@@ -117,8 +117,8 @@ class BatteryStatusManager {
/**
* Native JNI call
* see content/browser/battery_status/battery_status_manager_android.cc
* see content/browser/battery_status/battery_status_manager.cc
*/
private native void nativeGotBatteryStatus(long nativeBatteryStatusManagerAndroid,
private native void nativeGotBatteryStatus(long nativeBatteryStatusManager,
boolean charging, double chargingTime, double dischargingTime, double level);
}
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