Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1122)

Unified Diff: chrome/browser/policy/device_status_collector_unittest.cc

Issue 9289017: Apply individual policies for the various parts of device status reports. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address Julian's comments. Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/policy/device_status_collector_unittest.cc
diff --git a/chrome/browser/policy/device_status_collector_unittest.cc b/chrome/browser/policy/device_status_collector_unittest.cc
index 1dde8b640d7ca76ff7e70a745a1a27be0f72fa42..96a77ed9b986dde9333ccacd1ff2697e2e79a542 100644
--- a/chrome/browser/policy/device_status_collector_unittest.cc
+++ b/chrome/browser/policy/device_status_collector_unittest.cc
@@ -7,10 +7,15 @@
#include "base/message_loop.h"
#include "base/time.h"
#include "chrome/browser/idle.h"
+#include "chrome/browser/chromeos/cros_settings.h"
+#include "chrome/browser/chromeos/cros_settings_names.h"
+#include "chrome/browser/chromeos/cros_settings_provider.h"
+#include "chrome/browser/chromeos/stub_cros_settings_provider.h"
#include "chrome/browser/chromeos/system/mock_statistics_provider.h"
#include "chrome/browser/policy/proto/device_management_backend.pb.h"
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/test/base/testing_pref_service.h"
+#include "content/test/test_browser_thread.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -91,11 +96,31 @@ using ::testing::SetArgPointee;
class DeviceStatusCollectorTest : public testing::Test {
public:
DeviceStatusCollectorTest()
- : prefs_(),
- status_collector_(&prefs_, &statistics_provider_) {
+ : message_loop_(MessageLoop::TYPE_UI),
+ ui_thread_(content::BrowserThread::UI, &message_loop_),
+ file_thread_(content::BrowserThread::FILE, &message_loop_),
+ status_collector_(&prefs_, &statistics_provider_) {
+
DeviceStatusCollector::RegisterPrefs(&prefs_);
EXPECT_CALL(statistics_provider_, GetMachineStatistic(_, NotNull()))
.WillRepeatedly(Return(false));
+
+ cros_settings_ = chromeos::CrosSettings::Get();
+
+ // Remove the real DeviceSettingsProvider and replace it with a stub.
+ device_settings_provider_ =
+ cros_settings_->GetProvider(chromeos::kReportDeviceVersionInfo);
+ EXPECT_TRUE(device_settings_provider_ != NULL);
+ EXPECT_TRUE(
+ cros_settings_->RemoveSettingsProvider(device_settings_provider_));
+ cros_settings_->AddSettingsProvider(&stub_settings_provider_);
+ }
+
+ ~DeviceStatusCollectorTest() {
+ // Restore the real DeviceSettingsProvider.
+ EXPECT_TRUE(
+ cros_settings_->RemoveSettingsProvider(&stub_settings_provider_));
+ cros_settings_->AddSettingsProvider(device_settings_provider_);
}
protected:
@@ -105,10 +130,16 @@ class DeviceStatusCollectorTest : public testing::Test {
}
MessageLoop message_loop_;
+ content::TestBrowserThread ui_thread_;
+ content::TestBrowserThread file_thread_;
+
TestingPrefService prefs_;
chromeos::system::MockStatisticsProvider statistics_provider_;
TestingDeviceStatusCollector status_collector_;
em::DeviceStatusReportRequest status_;
+ chromeos::CrosSettings* cros_settings_;
+ chromeos::CrosSettingsProvider* device_settings_provider_;
+ chromeos::StubCrosSettingsProvider stub_settings_provider_;
};
TEST_F(DeviceStatusCollectorTest, AllIdle) {
@@ -117,6 +148,8 @@ TEST_F(DeviceStatusCollectorTest, AllIdle) {
IDLE_STATE_IDLE,
IDLE_STATE_IDLE
};
+ cros_settings_->SetBoolean(chromeos::kReportDeviceActivityTimes, true);
+
// Test reporting with no data.
status_collector_.GetStatus(&status_);
EXPECT_EQ(0, status_.active_time_size());
@@ -142,6 +175,8 @@ TEST_F(DeviceStatusCollectorTest, AllActive) {
IDLE_STATE_ACTIVE,
IDLE_STATE_ACTIVE
};
+ cros_settings_->SetBoolean(chromeos::kReportDeviceActivityTimes, true);
+
// Test a single active sample.
status_collector_.Simulate(test_states, 1);
status_collector_.GetStatus(&status_);
@@ -168,6 +203,7 @@ TEST_F(DeviceStatusCollectorTest, MixedStates) {
IDLE_STATE_IDLE,
IDLE_STATE_ACTIVE
};
+ cros_settings_->SetBoolean(chromeos::kReportDeviceActivityTimes, true);
status_collector_.Simulate(test_states,
sizeof(test_states) / sizeof(IdleState));
status_collector_.GetStatus(&status_);
@@ -184,6 +220,7 @@ TEST_F(DeviceStatusCollectorTest, StateKeptInPref) {
IDLE_STATE_IDLE,
IDLE_STATE_IDLE
};
+ cros_settings_->SetBoolean(chromeos::kReportDeviceActivityTimes, true);
status_collector_.Simulate(test_states,
sizeof(test_states) / sizeof(IdleState));
@@ -209,6 +246,7 @@ TEST_F(DeviceStatusCollectorTest, Times) {
IDLE_STATE_IDLE,
IDLE_STATE_IDLE
};
+ cros_settings_->SetBoolean(chromeos::kReportDeviceActivityTimes, true);
status_collector_.Simulate(test_states,
sizeof(test_states) / sizeof(IdleState));
status_collector_.GetStatus(&status_);
@@ -224,6 +262,7 @@ TEST_F(DeviceStatusCollectorTest, MaxStoredPeriods) {
};
unsigned int max_periods = 10;
+ cros_settings_->SetBoolean(chromeos::kReportDeviceActivityTimes, true);
status_collector_.set_max_stored_active_periods(max_periods);
// Simulate 12 active periods.
@@ -237,12 +276,38 @@ TEST_F(DeviceStatusCollectorTest, MaxStoredPeriods) {
EXPECT_EQ(static_cast<int>(max_periods), status_.active_time_size());
}
+TEST_F(DeviceStatusCollectorTest, ActivityTimesDisabledByDefault) {
+ // If the pref for collecting device activity times isn't explicitly turned
+ // on, no data on activity times should be reported.
+
+ IdleState test_states[] = {
+ IDLE_STATE_ACTIVE,
+ IDLE_STATE_ACTIVE,
+ IDLE_STATE_ACTIVE
+ };
+ status_collector_.Simulate(test_states,
+ sizeof(test_states) / sizeof(IdleState));
+ status_collector_.GetStatus(&status_);
+ EXPECT_EQ(0, status_.active_time_size());
+ EXPECT_EQ(0, GetActiveMilliseconds(status_));
+}
+
TEST_F(DeviceStatusCollectorTest, DevSwitchBootMode) {
+ // Test that boot mode data is not reported if the pref is not turned on.
status_collector_.GetStatus(&status_);
EXPECT_EQ(false, status_.has_boot_mode());
EXPECT_CALL(statistics_provider_,
GetMachineStatistic("devsw_boot", NotNull()))
+ .WillRepeatedly(DoAll(SetArgPointee<1>("0"), Return(true)));
+ EXPECT_EQ(false, status_.has_boot_mode());
+
+ // Turn the pref on, and check that the status is reported iff the
+ // statistics provider returns valid data.
+ cros_settings_->SetBoolean(chromeos::kReportDeviceBootMode, true);
+
+ EXPECT_CALL(statistics_provider_,
+ GetMachineStatistic("devsw_boot", NotNull()))
.WillOnce(DoAll(SetArgPointee<1>("(error)"), Return(true)));
status_collector_.GetStatus(&status_);
EXPECT_EQ(false, status_.has_boot_mode());
@@ -266,4 +331,24 @@ TEST_F(DeviceStatusCollectorTest, DevSwitchBootMode) {
EXPECT_EQ("Dev", status_.boot_mode());
}
+TEST_F(DeviceStatusCollectorTest, VersionInfo) {
+ // When the pref to collect this data is not enabled, expect that none of
+ // the fields are present in the protobuf.
+ status_collector_.GetStatus(&status_);
+ EXPECT_EQ(false, status_.has_browser_version());
+ EXPECT_EQ(false, status_.has_os_version());
+ EXPECT_EQ(false, status_.has_firmware_version());
+
+ cros_settings_->SetBoolean(chromeos::kReportDeviceVersionInfo, true);
+ status_collector_.GetStatus(&status_);
+ EXPECT_EQ(true, status_.has_browser_version());
+ EXPECT_EQ(true, status_.has_os_version());
+ EXPECT_EQ(true, status_.has_firmware_version());
+
+ // Check that the browser version is not empty. OS version & firmware
+ // don't have any reasonable values inside the unit test, so those
+ // aren't checked.
+ EXPECT_NE("", status_.browser_version());
+}
+
} // namespace policy
« no previous file with comments | « chrome/browser/policy/device_status_collector.cc ('k') | chrome/browser/policy/proto/chrome_device_policy.proto » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698