910e62b5创建于 1月15日历史提交
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "extensions/test/permissions_manager_waiter.h"

namespace extensions {

PermissionsManagerWaiter::PermissionsManagerWaiter(
    PermissionsManager* manager) {
  manager_observation_.Observe(manager);
}

PermissionsManagerWaiter::~PermissionsManagerWaiter() = default;

void PermissionsManagerWaiter::WaitForUserPermissionsSettingsChange() {
  user_permissions_settings_changed_run_loop_.Run();
}

void PermissionsManagerWaiter::WaitForExtensionPermissionsUpdate() {
  extension_permissions_update_run_loop_.Run();
}

void PermissionsManagerWaiter::WaitForExtensionPermissionsUpdate(
    base::OnceCallback<void(const Extension& extension,
                            const PermissionSet& permissions,
                            PermissionsManager::UpdateReason reason)>
        callback) {
  extension_permissions_update_callback_ = std::move(callback);
  WaitForExtensionPermissionsUpdate();
}

void PermissionsManagerWaiter::OnUserPermissionsSettingsChanged(
    const PermissionsManager::UserPermissionsSettings& settings) {
  user_permissions_settings_changed_run_loop_.Quit();
}

void PermissionsManagerWaiter::OnExtensionPermissionsUpdated(
    const Extension& extension,
    const PermissionSet& permissions,
    PermissionsManager::UpdateReason reason) {
  if (extension_permissions_update_callback_) {
    std::move(extension_permissions_update_callback_)
        .Run(extension, permissions, reason);
  }
  extension_permissions_update_run_loop_.Quit();
}

}  // namespace extensions