Commit 0b938caa authored by Zakhar Voit's avatar Zakhar Voit Committed by Commit Bot

[Extensions] Make chrome.loginScreenStorageApi keep owner ID in keys

Keys for persistent data in the login screen storage now include owner
ID to clear data saved by each owner when its uninstalled.

Bug: 980171
Change-Id: Ie755faf6eec89a809b83f2df76b9a6d109a19f9a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1753007
Commit-Queue: Alexander Hendrich <hendrich@chromium.org>
Reviewed-by: default avatarDevlin <rdevlin.cronin@chromium.org>
Reviewed-by: default avatarAlexander Hendrich <hendrich@chromium.org>
Cr-Commit-Position: refs/heads/master@{#694343}
parent 9793b4a3
......@@ -4,6 +4,7 @@
#include "chrome/browser/chromeos/extensions/login_screen/login_screen_storage/login_screen_storage_api.h"
#include "base/strings/strcat.h"
#include "base/values.h"
#include "chrome/common/extensions/api/login_screen_storage.h"
#include "chromeos/dbus/session_manager/session_manager_client.h"
......@@ -82,10 +83,11 @@ void LoginScreenStorageStorePersistentDataFunction::StoreDataForExtensions(
if (extension_ids.empty())
return;
std::string extension_id = extension_ids.back();
std::string receiver_id = extension_ids.back();
extension_ids.pop_back();
chromeos::SessionManagerClient::Get()->LoginScreenStorageStore(
kPersistentDataKeyPrefix + extension_id, metadata, data,
kPersistentDataKeyPrefix + extension_id() + "_" + receiver_id, metadata,
data,
base::BindOnce(
&LoginScreenStorageStorePersistentDataFunction::OnDataStored, this,
std::move(extension_ids), metadata, data));
......@@ -98,8 +100,13 @@ LoginScreenStorageRetrievePersistentDataFunction::
ExtensionFunction::ResponseAction
LoginScreenStorageRetrievePersistentDataFunction::Run() {
std::unique_ptr<login_screen_storage::RetrievePersistentData::Params> params =
login_screen_storage::RetrievePersistentData::Params::Create(*args_);
EXTENSION_FUNCTION_VALIDATE(params);
chromeos::SessionManagerClient::Get()->LoginScreenStorageRetrieve(
kPersistentDataKeyPrefix + extension_id(),
base::StrCat(
{kPersistentDataKeyPrefix, params->owner_id, "_", extension_id()}),
base::BindOnce(
&LoginScreenStorageRetrievePersistentDataFunction::OnDataRetrieved,
this));
......
......@@ -24,7 +24,10 @@ namespace loginScreenStorage {
// Retrieves persistent data that was previously stored using
// $(ref:storePersistentData) for the caller's extension ID.
static void retrievePersistentData(RetrieveCallback callback);
// |ownerId|: ID of the extension that saved the data that the caller is
// trying to retrieve.
static void retrievePersistentData(DOMString ownerId,
RetrieveCallback callback);
// Stores credentials for later access from the user session. This method
// will fail if called while a user session is active.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment