blob: dbde8ab62e7db7e5b949e396f62fcd4989526bf4 [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/extensions/test_extension_action_dispatcher_observer.h"
#include "base/memory/raw_ptr.h"
#include "extensions/browser/extension_action.h"
#include "extensions/buildflags/buildflags.h"
static_assert(BUILDFLAG(ENABLE_EXTENSIONS_CORE));
namespace extensions {
TestExtensionActionDispatcherObserver::TestExtensionActionDispatcherObserver(
content::BrowserContext* context,
const ExtensionId& extension_id)
: extension_id_(extension_id) {
scoped_observation_.Observe(ExtensionActionDispatcher::Get(context));
}
TestExtensionActionDispatcherObserver::TestExtensionActionDispatcherObserver(
content::BrowserContext* context,
const ExtensionId& extension_id,
const std::set<raw_ptr<content::WebContents, SetExperimental>>&
contents_to_observe)
: TestExtensionActionDispatcherObserver(context, extension_id) {
contents_to_observe_ = contents_to_observe;
}
TestExtensionActionDispatcherObserver::
~TestExtensionActionDispatcherObserver() = default;
void TestExtensionActionDispatcherObserver::Wait() {
run_loop_.Run();
}
void TestExtensionActionDispatcherObserver::OnExtensionActionUpdated(
ExtensionAction* extension_action,
content::WebContents* web_contents,
content::BrowserContext* browser_context) {
if (extension_action->extension_id() == extension_id_) {
last_web_contents_ = web_contents;
contents_to_observe_.erase(web_contents);
if (contents_to_observe_.empty()) {
run_loop_.QuitWhenIdle();
}
}
}
} // namespace extensions