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 <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 const char kTimestamp[] = "timestamp"; | 65 const char kTimestamp[] = "timestamp"; |
66 | 66 |
67 // Determine the day key (milliseconds since epoch for corresponding day in UTC) | 67 // Determine the day key (milliseconds since epoch for corresponding day in UTC) |
68 // for a given |timestamp|. | 68 // for a given |timestamp|. |
69 int64 TimestampToDayKey(Time timestamp) { | 69 int64 TimestampToDayKey(Time timestamp) { |
70 Time::Exploded exploded; | 70 Time::Exploded exploded; |
71 timestamp.LocalMidnight().LocalExplode(&exploded); | 71 timestamp.LocalMidnight().LocalExplode(&exploded); |
72 return (Time::FromUTCExploded(exploded) - Time::UnixEpoch()).InMilliseconds(); | 72 return (Time::FromUTCExploded(exploded) - Time::UnixEpoch()).InMilliseconds(); |
73 } | 73 } |
74 | 74 |
75 // Maximum number of users to report. | |
76 const int kMaxUserCount = 5; | |
77 | |
78 } // namespace | 75 } // namespace |
79 | 76 |
80 namespace policy { | 77 namespace policy { |
81 | 78 |
82 DeviceStatusCollector::DeviceStatusCollector( | 79 DeviceStatusCollector::DeviceStatusCollector( |
83 PrefService* local_state, | 80 PrefService* local_state, |
84 chromeos::system::StatisticsProvider* provider, | 81 chromeos::system::StatisticsProvider* provider, |
85 LocationUpdateRequester* location_update_requester) | 82 LocationUpdateRequester* location_update_requester) |
86 : max_stored_past_activity_days_(kMaxStoredPastActivityDays), | 83 : max_stored_past_activity_days_(kMaxStoredPastActivityDays), |
87 max_stored_future_activity_days_(kMaxStoredFutureActivityDays), | 84 max_stored_future_activity_days_(kMaxStoredFutureActivityDays), |
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
423 if (!(*device)->meid().empty()) | 420 if (!(*device)->meid().empty()) |
424 interface->set_meid((*device)->meid()); | 421 interface->set_meid((*device)->meid()); |
425 if (!(*device)->imei().empty()) | 422 if (!(*device)->imei().empty()) |
426 interface->set_imei((*device)->imei()); | 423 interface->set_imei((*device)->imei()); |
427 } | 424 } |
428 } | 425 } |
429 | 426 |
430 void DeviceStatusCollector::GetUsers(em::DeviceStatusReportRequest* request) { | 427 void DeviceStatusCollector::GetUsers(em::DeviceStatusReportRequest* request) { |
431 policy::BrowserPolicyConnectorChromeOS* connector = | 428 policy::BrowserPolicyConnectorChromeOS* connector = |
432 g_browser_process->platform_part()->browser_policy_connector_chromeos(); | 429 g_browser_process->platform_part()->browser_policy_connector_chromeos(); |
433 bool found_managed_user = false; | |
434 const chromeos::UserList& users = chromeos::UserManager::Get()->GetUsers(); | 430 const chromeos::UserList& users = chromeos::UserManager::Get()->GetUsers(); |
435 chromeos::UserList::const_iterator user; | 431 chromeos::UserList::const_iterator user; |
436 for (user = users.begin(); user != users.end(); ++user) { | 432 for (user = users.begin(); user != users.end(); ++user) { |
437 // Only regular users are reported. | 433 // Only regular users are reported. |
438 if ((*user)->GetType() != chromeos::User::USER_TYPE_REGULAR) | 434 if ((*user)->GetType() != chromeos::User::USER_TYPE_REGULAR) |
439 continue; | 435 continue; |
440 | 436 |
441 em::DeviceUser* device_user = request->add_user(); | 437 em::DeviceUser* device_user = request->add_user(); |
442 const std::string& email = (*user)->email(); | 438 const std::string& email = (*user)->email(); |
443 if (connector->GetUserAffiliation(email) == USER_AFFILIATION_MANAGED) { | 439 if (connector->GetUserAffiliation(email) == USER_AFFILIATION_MANAGED) { |
444 device_user->set_type(em::DeviceUser::USER_TYPE_MANAGED); | 440 device_user->set_type(em::DeviceUser::USER_TYPE_MANAGED); |
445 device_user->set_email(email); | 441 device_user->set_email(email); |
446 found_managed_user = true; | |
447 } else { | 442 } else { |
448 device_user->set_type(em::DeviceUser::USER_TYPE_UNMANAGED); | 443 device_user->set_type(em::DeviceUser::USER_TYPE_UNMANAGED); |
449 // Do not report the email address of unmanaged users. | 444 // Do not report the email address of unmanaged users. |
450 } | 445 } |
451 | |
452 // Add only kMaxUserCount entries, unless no managed users are found in the | |
453 // first kMaxUserCount users. In that case, continue until at least one | |
454 // managed user is found. | |
455 if (request->user_size() >= kMaxUserCount && found_managed_user) | |
456 break; | |
457 } | 446 } |
458 } | 447 } |
459 | 448 |
460 void DeviceStatusCollector::GetStatus(em::DeviceStatusReportRequest* request) { | 449 void DeviceStatusCollector::GetStatus(em::DeviceStatusReportRequest* request) { |
461 // TODO(mnissler): Remove once the old cloud policy stack is retired. The old | 450 // TODO(mnissler): Remove once the old cloud policy stack is retired. The old |
462 // stack doesn't support reporting successful submissions back to here, so | 451 // stack doesn't support reporting successful submissions back to here, so |
463 // just assume whatever ends up in |request| gets submitted successfully. | 452 // just assume whatever ends up in |request| gets submitted successfully. |
464 GetDeviceStatus(request); | 453 GetDeviceStatus(request); |
465 OnSubmittedSuccessfully(); | 454 OnSubmittedSuccessfully(); |
466 } | 455 } |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
559 location.SetDouble(kSpeed, position.speed); | 548 location.SetDouble(kSpeed, position.speed); |
560 location.SetString(kTimestamp, | 549 location.SetString(kTimestamp, |
561 base::Int64ToString(position.timestamp.ToInternalValue())); | 550 base::Int64ToString(position.timestamp.ToInternalValue())); |
562 local_state_->Set(prefs::kDeviceLocation, location); | 551 local_state_->Set(prefs::kDeviceLocation, location); |
563 } | 552 } |
564 | 553 |
565 ScheduleGeolocationUpdateRequest(); | 554 ScheduleGeolocationUpdateRequest(); |
566 } | 555 } |
567 | 556 |
568 } // namespace policy | 557 } // namespace policy |
OLD | NEW |