| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/policy/device_status_collector.h" | 5 #include "chrome/browser/chromeos/policy/device_status_collector.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 #include "chromeos/disks/disk_mount_manager.h" | 44 #include "chromeos/disks/disk_mount_manager.h" |
| 45 #include "chromeos/disks/mock_disk_mount_manager.h" | 45 #include "chromeos/disks/mock_disk_mount_manager.h" |
| 46 #include "chromeos/network/network_handler.h" | 46 #include "chromeos/network/network_handler.h" |
| 47 #include "chromeos/network/network_state.h" | 47 #include "chromeos/network/network_state.h" |
| 48 #include "chromeos/network/network_state_handler.h" | 48 #include "chromeos/network/network_state_handler.h" |
| 49 #include "chromeos/settings/cros_settings_names.h" | 49 #include "chromeos/settings/cros_settings_names.h" |
| 50 #include "chromeos/system/fake_statistics_provider.h" | 50 #include "chromeos/system/fake_statistics_provider.h" |
| 51 #include "components/prefs/pref_service.h" | 51 #include "components/prefs/pref_service.h" |
| 52 #include "components/prefs/testing_pref_service.h" | 52 #include "components/prefs/testing_pref_service.h" |
| 53 #include "content/public/browser/browser_thread.h" | 53 #include "content/public/browser/browser_thread.h" |
| 54 #include "content/public/browser/geolocation_provider.h" |
| 54 #include "content/public/test/test_browser_thread.h" | 55 #include "content/public/test/test_browser_thread.h" |
| 55 #include "content/public/test/test_utils.h" | 56 #include "content/public/test/test_utils.h" |
| 56 #include "device/geolocation/geolocation_provider.h" | |
| 57 #include "policy/proto/device_management_backend.pb.h" | 57 #include "policy/proto/device_management_backend.pb.h" |
| 58 #include "storage/browser/fileapi/external_mount_points.h" | 58 #include "storage/browser/fileapi/external_mount_points.h" |
| 59 #include "storage/browser/fileapi/mount_points.h" | 59 #include "storage/browser/fileapi/mount_points.h" |
| 60 #include "storage/common/fileapi/file_system_mount_option.h" | 60 #include "storage/common/fileapi/file_system_mount_option.h" |
| 61 #include "storage/common/fileapi/file_system_types.h" | 61 #include "storage/common/fileapi/file_system_types.h" |
| 62 #include "testing/gmock/include/gmock/gmock.h" | 62 #include "testing/gmock/include/gmock/gmock.h" |
| 63 #include "testing/gtest/include/gtest/gtest.h" | 63 #include "testing/gtest/include/gtest/gtest.h" |
| 64 #include "third_party/cros_system_api/dbus/service_constants.h" | 64 #include "third_party/cros_system_api/dbus/service_constants.h" |
| 65 | 65 |
| 66 using ::testing::Return; | 66 using ::testing::Return; |
| 67 using ::testing::ReturnRef; | 67 using ::testing::ReturnRef; |
| 68 using base::Time; | 68 using base::Time; |
| 69 using base::TimeDelta; | 69 using base::TimeDelta; |
| 70 using chromeos::disks::DiskMountManager; | 70 using chromeos::disks::DiskMountManager; |
| 71 | 71 |
| 72 namespace em = enterprise_management; | 72 namespace em = enterprise_management; |
| 73 | 73 |
| 74 namespace { | 74 namespace { |
| 75 | 75 |
| 76 const int64_t kMillisecondsPerDay = Time::kMicrosecondsPerDay / 1000; | 76 const int64_t kMillisecondsPerDay = Time::kMicrosecondsPerDay / 1000; |
| 77 const char kKioskAccountId[] = "kiosk_user@localhost"; | 77 const char kKioskAccountId[] = "kiosk_user@localhost"; |
| 78 const char kKioskAppId[] = "kiosk_app_id"; | 78 const char kKioskAppId[] = "kiosk_app_id"; |
| 79 const char kExternalMountPoint[] = "/a/b/c"; | 79 const char kExternalMountPoint[] = "/a/b/c"; |
| 80 const char kPublicAccountId[] = "public_user@localhost"; | 80 const char kPublicAccountId[] = "public_user@localhost"; |
| 81 | 81 |
| 82 std::unique_ptr<device::Geoposition> mock_position_to_return_next; | 82 std::unique_ptr<content::Geoposition> mock_position_to_return_next; |
| 83 | 83 |
| 84 void SetMockPositionToReturnNext(const device::Geoposition& position) { | 84 void SetMockPositionToReturnNext(const content::Geoposition &position) { |
| 85 mock_position_to_return_next.reset(new device::Geoposition(position)); | 85 mock_position_to_return_next.reset(new content::Geoposition(position)); |
| 86 } | 86 } |
| 87 | 87 |
| 88 void MockPositionUpdateRequester( | 88 void MockPositionUpdateRequester( |
| 89 const device::GeolocationProvider::LocationUpdateCallback& callback) { | 89 const content::GeolocationProvider::LocationUpdateCallback& callback) { |
| 90 if (!mock_position_to_return_next.get()) | 90 if (!mock_position_to_return_next.get()) |
| 91 return; | 91 return; |
| 92 | 92 |
| 93 // If the fix is invalid, the DeviceStatusCollector will immediately request | 93 // If the fix is invalid, the DeviceStatusCollector will immediately request |
| 94 // another update when it receives the callback. This is desirable and safe in | 94 // another update when it receives the callback. This is desirable and safe in |
| 95 // real life where geolocation updates arrive asynchronously. In this testing | 95 // real life where geolocation updates arrive asynchronously. In this testing |
| 96 // harness, the callback is invoked synchronously upon request, leading to a | 96 // harness, the callback is invoked synchronously upon request, leading to a |
| 97 // request-callback loop. The loop is broken by returning the mock position | 97 // request-callback loop. The loop is broken by returning the mock position |
| 98 // only once. | 98 // only once. |
| 99 std::unique_ptr<device::Geoposition> position( | 99 std::unique_ptr<content::Geoposition> position( |
| 100 mock_position_to_return_next.release()); | 100 mock_position_to_return_next.release()); |
| 101 callback.Run(*position); | 101 callback.Run(*position); |
| 102 } | 102 } |
| 103 | 103 |
| 104 class TestingDeviceStatusCollector : public policy::DeviceStatusCollector { | 104 class TestingDeviceStatusCollector : public policy::DeviceStatusCollector { |
| 105 public: | 105 public: |
| 106 TestingDeviceStatusCollector( | 106 TestingDeviceStatusCollector( |
| 107 PrefService* local_state, | 107 PrefService* local_state, |
| 108 chromeos::system::StatisticsProvider* provider, | 108 chromeos::system::StatisticsProvider* provider, |
| 109 const policy::DeviceStatusCollector::LocationUpdateRequester& | 109 const policy::DeviceStatusCollector::LocationUpdateRequester& |
| (...skipping 670 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 780 EXPECT_TRUE(status_.has_os_version()); | 780 EXPECT_TRUE(status_.has_os_version()); |
| 781 EXPECT_TRUE(status_.has_firmware_version()); | 781 EXPECT_TRUE(status_.has_firmware_version()); |
| 782 | 782 |
| 783 // Check that the browser version is not empty. OS version & firmware | 783 // Check that the browser version is not empty. OS version & firmware |
| 784 // don't have any reasonable values inside the unit test, so those | 784 // don't have any reasonable values inside the unit test, so those |
| 785 // aren't checked. | 785 // aren't checked. |
| 786 EXPECT_NE("", status_.browser_version()); | 786 EXPECT_NE("", status_.browser_version()); |
| 787 } | 787 } |
| 788 | 788 |
| 789 TEST_F(DeviceStatusCollectorTest, Location) { | 789 TEST_F(DeviceStatusCollectorTest, Location) { |
| 790 device::Geoposition valid_fix; | 790 content::Geoposition valid_fix; |
| 791 valid_fix.latitude = 4.3; | 791 valid_fix.latitude = 4.3; |
| 792 valid_fix.longitude = -7.8; | 792 valid_fix.longitude = -7.8; |
| 793 valid_fix.accuracy = 3.; | 793 valid_fix.accuracy = 3.; |
| 794 valid_fix.timestamp = Time::Now(); | 794 valid_fix.timestamp = Time::Now(); |
| 795 | 795 |
| 796 device::Geoposition invalid_fix; | 796 content::Geoposition invalid_fix; |
| 797 invalid_fix.error_code = device::Geoposition::ERROR_CODE_POSITION_UNAVAILABLE; | 797 invalid_fix.error_code = |
| 798 content::Geoposition::ERROR_CODE_POSITION_UNAVAILABLE; |
| 798 invalid_fix.timestamp = Time::Now(); | 799 invalid_fix.timestamp = Time::Now(); |
| 799 | 800 |
| 800 // Check that when device location reporting is disabled, no location is | 801 // Check that when device location reporting is disabled, no location is |
| 801 // reported. | 802 // reported. |
| 802 SetMockPositionToReturnNext(valid_fix); | 803 SetMockPositionToReturnNext(valid_fix); |
| 803 CheckThatNoLocationIsReported(); | 804 CheckThatNoLocationIsReported(); |
| 804 | 805 |
| 805 // Check that when device location reporting is enabled and a valid fix is | 806 // Check that when device location reporting is enabled and a valid fix is |
| 806 // available, the location is reported and is stored in local state. | 807 // available, the location is reported and is stored in local state. |
| 807 SetMockPositionToReturnNext(valid_fix); | 808 SetMockPositionToReturnNext(valid_fix); |
| (...skipping 678 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1486 AccountId::FromUserEmail(kPublicAccountId)); | 1487 AccountId::FromUserEmail(kPublicAccountId)); |
| 1487 EXPECT_CALL(*user_manager_, IsLoggedInAsPublicAccount()) | 1488 EXPECT_CALL(*user_manager_, IsLoggedInAsPublicAccount()) |
| 1488 .WillRepeatedly(Return(true)); | 1489 .WillRepeatedly(Return(true)); |
| 1489 | 1490 |
| 1490 settings_helper_.SetBoolean(chromeos::kReportDeviceNetworkInterfaces, true); | 1491 settings_helper_.SetBoolean(chromeos::kReportDeviceNetworkInterfaces, true); |
| 1491 GetStatus(); | 1492 GetStatus(); |
| 1492 VerifyNetworkReporting(); | 1493 VerifyNetworkReporting(); |
| 1493 } | 1494 } |
| 1494 | 1495 |
| 1495 } // namespace policy | 1496 } // namespace policy |
| OLD | NEW |