summaryrefslogtreecommitdiffstats
path: root/device
diff options
context:
space:
mode:
authoryoungki@chromium.org <youngki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-25 17:56:11 +0000
committeryoungki@chromium.org <youngki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-25 17:56:11 +0000
commit82ed59c666070e527c402a3be42930a70ffb5e2d (patch)
treebb5d5d3f1d7d6314b9edea35f39213f68374f5ed /device
parent2c279f4636902ac5b112f98bd8cb5b87de16db39 (diff)
downloadchromium_src-82ed59c666070e527c402a3be42930a70ffb5e2d.zip
chromium_src-82ed59c666070e527c402a3be42930a70ffb5e2d.tar.gz
chromium_src-82ed59c666070e527c402a3be42930a70ffb5e2d.tar.bz2
Added Adapter*Changed() observer calls to BluetoothAdapterWin.
BUG=135470 Review URL: https://chromiumcodereview.appspot.com/12212163 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@184435 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'device')
-rw-r--r--device/bluetooth/bluetooth_adapter_win.cc14
-rw-r--r--device/bluetooth/bluetooth_adapter_win_unittest.cc47
2 files changed, 58 insertions, 3 deletions
diff --git a/device/bluetooth/bluetooth_adapter_win.cc b/device/bluetooth/bluetooth_adapter_win.cc
index d9f3520..5341aba 100644
--- a/device/bluetooth/bluetooth_adapter_win.cc
+++ b/device/bluetooth/bluetooth_adapter_win.cc
@@ -1,8 +1,6 @@
// Copyright (c) 2012 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.
-//
-// TODO(youngki): Implement this file.
#include "device/bluetooth/bluetooth_adapter_win.h"
@@ -162,8 +160,18 @@ void BluetoothAdapterWin::AdapterStateChanged(
const BluetoothTaskManagerWin::AdapterState& state) {
DCHECK(thread_checker_.CalledOnValidThread());
name_ = state.name;
+ bool was_present = IsPresent();
+ bool is_present = !state.address.empty();
address_ = state.address;
- powered_ = state.powered;
+ if (was_present != is_present) {
+ FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_,
+ AdapterPresentChanged(this, is_present));
+ }
+ if (powered_ != state.powered) {
+ powered_ = state.powered;
+ FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_,
+ AdapterPoweredChanged(this, powered_));
+ }
if (!initialized_) {
initialized_ = true;
init_callback_.Run();
diff --git a/device/bluetooth/bluetooth_adapter_win_unittest.cc b/device/bluetooth/bluetooth_adapter_win_unittest.cc
index d71c48f..91887c47 100644
--- a/device/bluetooth/bluetooth_adapter_win_unittest.cc
+++ b/device/bluetooth/bluetooth_adapter_win_unittest.cc
@@ -36,6 +36,8 @@ class AdapterObserver : public device::BluetoothAdapter::Observer {
}
void Clear() {
+ num_present_changed_ = 0;
+ num_powered_changed_ = 0;
num_discovering_changed_ = 0;
num_scanning_changed_ = 0;
num_device_added_ = 0;
@@ -43,6 +45,16 @@ class AdapterObserver : public device::BluetoothAdapter::Observer {
num_device_removed_ = 0;
}
+ virtual void AdapterPresentChanged(
+ device::BluetoothAdapter* adapter, bool present) OVERRIDE {
+ num_present_changed_++;
+ }
+
+ virtual void AdapterPoweredChanged(
+ device::BluetoothAdapter* adapter, bool powered) OVERRIDE {
+ num_powered_changed_++;
+ }
+
virtual void AdapterDiscoveringChanged(
device::BluetoothAdapter* adapter, bool discovering) OVERRIDE {
num_discovering_changed_++;
@@ -71,6 +83,14 @@ class AdapterObserver : public device::BluetoothAdapter::Observer {
num_device_removed_++;
}
+ int num_present_changed() const {
+ return num_present_changed_;
+ }
+
+ int num_powered_changed() const {
+ return num_powered_changed_;
+ }
+
int num_discovering_changed() const {
return num_discovering_changed_;
}
@@ -92,6 +112,8 @@ class AdapterObserver : public device::BluetoothAdapter::Observer {
}
private:
+ int num_present_changed_;
+ int num_powered_changed_;
int num_discovering_changed_;
int num_scanning_changed_;
int num_device_added_;
@@ -176,6 +198,31 @@ TEST_F(BluetoothAdapterWinTest, AdapterPresent) {
EXPECT_TRUE(adapter_win_->IsPresent());
}
+TEST_F(BluetoothAdapterWinTest, AdapterPresentChanged) {
+ BluetoothTaskManagerWin::AdapterState state;
+ state.address = kAdapterAddress;
+ state.name = kAdapterName;
+ adapter_win_->AdapterStateChanged(state);
+ EXPECT_EQ(1, adapter_observer_.num_present_changed());
+ adapter_win_->AdapterStateChanged(state);
+ EXPECT_EQ(1, adapter_observer_.num_present_changed());
+ BluetoothTaskManagerWin::AdapterState empty_state;
+ adapter_win_->AdapterStateChanged(empty_state);
+ EXPECT_EQ(2, adapter_observer_.num_present_changed());
+}
+
+TEST_F(BluetoothAdapterWinTest, AdapterPoweredChanged) {
+ BluetoothTaskManagerWin::AdapterState state;
+ state.powered = true;
+ adapter_win_->AdapterStateChanged(state);
+ EXPECT_EQ(1, adapter_observer_.num_powered_changed());
+ adapter_win_->AdapterStateChanged(state);
+ EXPECT_EQ(1, adapter_observer_.num_powered_changed());
+ state.powered = false;
+ adapter_win_->AdapterStateChanged(state);
+ EXPECT_EQ(2, adapter_observer_.num_powered_changed());
+}
+
TEST_F(BluetoothAdapterWinTest, AdapterInitialized) {
EXPECT_FALSE(adapter_win_->IsInitialized());
EXPECT_FALSE(init_callback_called_);