Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(855)

Unified Diff: components/arc/intent_helper/arc_intent_helper_bridge.cc

Issue 2487623002: Notify Files App when ARC++ app is installed/removed (Closed)
Patch Set: Add RemoverObserver. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/arc/intent_helper/arc_intent_helper_bridge.cc
diff --git a/components/arc/intent_helper/arc_intent_helper_bridge.cc b/components/arc/intent_helper/arc_intent_helper_bridge.cc
index b691412c6e00863612c455b2230e235936bf3f83..bffc4a4111b51840250a2c8c6a8e5b1bfb1074a6 100644
--- a/components/arc/intent_helper/arc_intent_helper_bridge.cc
+++ b/components/arc/intent_helper/arc_intent_helper_bridge.cc
@@ -23,6 +23,9 @@
namespace arc {
+// TODO(oka): Avoid to assume the class is singleton.
+ArcIntentHelperBridge* g_arc_intent_helper_bridge = nullptr;
+
// static
const char ArcIntentHelperBridge::kArcIntentHelperPackageName[] =
"org.chromium.arc.intent_helper";
@@ -36,12 +39,25 @@ ArcIntentHelperBridge::ArcIntentHelperBridge(
icon_loader_(icon_loader),
activity_resolver_(activity_resolver) {
DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK(!g_arc_intent_helper_bridge);
+
arc_bridge_service()->intent_helper()->AddObserver(this);
+
+ g_arc_intent_helper_bridge = this;
}
ArcIntentHelperBridge::~ArcIntentHelperBridge() {
DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK_EQ(this, g_arc_intent_helper_bridge);
+
arc_bridge_service()->intent_helper()->RemoveObserver(this);
+
+ g_arc_intent_helper_bridge = nullptr;
+}
+
+// static
+ArcIntentHelperBridge* ArcIntentHelperBridge::Get() {
+ return g_arc_intent_helper_bridge;
}
void ArcIntentHelperBridge::OnInstanceReady() {
@@ -90,6 +106,14 @@ void ArcIntentHelperBridge::SetWallpaperDeprecated(
LOG(ERROR) << "IntentHelper.SetWallpaper is deprecated";
}
+void ArcIntentHelperBridge::AddObserver(Observer* observer) {
+ observer_list_.AddObserver(observer);
+}
+
+void ArcIntentHelperBridge::RemoveObserver(Observer* observer) {
+ observer_list_.RemoveObserver(observer);
+}
+
std::unique_ptr<ash::LinkHandlerModel> ArcIntentHelperBridge::CreateModel(
const GURL& url) {
DCHECK(thread_checker_.CalledOnValidThread());
@@ -168,6 +192,9 @@ void ArcIntentHelperBridge::OnIntentFiltersUpdated(
mojo::Array<mojom::IntentFilterPtr> filters) {
DCHECK(thread_checker_.CalledOnValidThread());
activity_resolver_->UpdateIntentFilters(std::move(filters));
+
+ for (auto& observer : observer_list_)
+ observer.OnAppsUpdated();
}
} // namespace arc

Powered by Google App Engine
This is Rietveld 408576698