update_engine: Policy determines P2P enabled status.
This switches the P2P Manager to use the newly introduced Update Manger
policy requests in determining whether P2P is enabled on the system.
There is a policy request for the initial state (P2PEnabled, sync) and
for tracking changes (P2PEnabledChanged, async), with the latest known
value being cached by the P2P Manager.
This also reverses a recent change that moved P2P prefs setting into the
P2PManager. In the absence of any additional logic (now cleared) there
was no point in having a dedicated method just for that, and so
dbus_service writes the prefs value directly. This affords us removing
the prefs argument when initializing the P2PManager.
BUG=chromium:425233
TEST=Unit tests.
Change-Id: I53280f05da8fe532b6502c175a8cc9ddc1e15a87
Reviewed-on: https://chromium-review.googlesource.com/226937
Tested-by: Gilad Arnold <[email protected]>
Reviewed-by: David Zeuthen <[email protected]>
Commit-Queue: Gilad Arnold <[email protected]>
diff --git a/p2p_manager.h b/p2p_manager.h
index 4c6e508..fb07c2e 100644
--- a/p2p_manager.h
+++ b/p2p_manager.h
@@ -17,6 +17,7 @@
#include "update_engine/clock_interface.h"
#include "update_engine/prefs_interface.h"
+#include "update_engine/update_manager/update_manager.h"
namespace chromeos_update_engine {
@@ -53,9 +54,8 @@
// null, then no device policy is used.
virtual void SetDevicePolicy(const policy::DevicePolicy* device_policy) = 0;
- // Returns true if - and only if - P2P should be used on this
- // device. This value is derived from a variety of sources including
- // enterprise policy.
+ // Returns true iff P2P is currently allowed for use on this device. This
+ // value is determined and maintained by the Update Manager.
virtual bool IsP2PEnabled() = 0;
// Ensures that the p2p subsystem is running (e.g. starts it if it's
@@ -150,12 +150,6 @@
// occurred.
virtual int CountSharedFiles() = 0;
- // Updates the preference setting for enabling P2P. If P2P is disabled as a
- // result, attempts to ensure that the service is not running. Returns true if
- // the setting was updated successfully (even through stopping the service may
- // have failed).
- virtual bool SetP2PEnabledPref(bool enabled) = 0;
-
// Creates a suitable P2PManager instance and initializes the object
// so it's ready for use. The |file_extension| parameter is used to
// identify your application, use e.g. "cros_au". If
@@ -168,12 +162,13 @@
// method) - pass zero to allow infinitely many files. The
// |max_file_age| parameter specifies the maximum file age after
// performing housekeeping (pass zero to allow files of any age).
- static P2PManager* Construct(Configuration *configuration,
- PrefsInterface *prefs,
- ClockInterface *clock,
- const std::string& file_extension,
- const int num_files_to_keep,
- const base::TimeDelta& max_file_age);
+ static P2PManager* Construct(
+ Configuration *configuration,
+ ClockInterface *clock,
+ chromeos_update_manager::UpdateManager* update_manager,
+ const std::string& file_extension,
+ const int num_files_to_keep,
+ const base::TimeDelta& max_file_age);
};
} // namespace chromeos_update_engine