Commit b6d659cd authored by Daniel Erat's avatar Daniel Erat Committed by Commit Bot

chromeos: Fix regression in Android note-taking app list.

Fix a bug where the note-taking app list spins forever due
to intent filter changes not being observed for newly-added
profiles.

Bug: 748763
Change-Id: I094f989ef986d8a8eaf2f2492d46a3c18ea73159
Reviewed-on: https://chromium-review.googlesource.com/594893Reviewed-by: default avatarHidehiko Abe <hidehiko@chromium.org>
Commit-Queue: Dan Erat <derat@chromium.org>
Cr-Commit-Position: refs/heads/master@{#491201}
parent 9759fff7
...@@ -549,6 +549,10 @@ void NoteTakingHelper::Observe(int type, ...@@ -549,6 +549,10 @@ void NoteTakingHelper::Observe(int type,
for (Observer& observer : observers_) for (Observer& observer : observers_)
observer.OnAvailableNoteTakingAppsUpdated(); observer.OnAvailableNoteTakingAppsUpdated();
} }
auto* bridge = arc::ArcIntentHelperBridge::GetForBrowserContext(profile);
if (bridge)
bridge->AddObserver(this);
} }
void NoteTakingHelper::OnExtensionLoaded( void NoteTakingHelper::OnExtensionLoaded(
......
...@@ -875,6 +875,10 @@ TEST_P(NoteTakingHelperTest, AddProfileWithPlayStoreEnabled) { ...@@ -875,6 +875,10 @@ TEST_P(NoteTakingHelperTest, AddProfileWithPlayStoreEnabled) {
EXPECT_FALSE(helper()->android_apps_received()); EXPECT_FALSE(helper()->android_apps_received());
EXPECT_EQ(1, observer.num_updates()); EXPECT_EQ(1, observer.num_updates());
// TODO(derat|hidehiko): Check that NoteTakingHelper adds itself as an
// observer of the ArcIntentHelperBridge corresponding to the new profile:
// https://crbug.com/748763
// Notification of updated intent filters should result in the apps being // Notification of updated intent filters should result in the apps being
// refreshed. // refreshed.
helper()->OnIntentFiltersUpdated(); helper()->OnIntentFiltersUpdated();
......
...@@ -156,6 +156,11 @@ void ArcIntentHelperBridge::RemoveObserver(ArcIntentHelperObserver* observer) { ...@@ -156,6 +156,11 @@ void ArcIntentHelperBridge::RemoveObserver(ArcIntentHelperObserver* observer) {
observer_list_.RemoveObserver(observer); observer_list_.RemoveObserver(observer);
} }
bool ArcIntentHelperBridge::HasObserver(
ArcIntentHelperObserver* observer) const {
return observer_list_.HasObserver(observer);
}
std::unique_ptr<ash::LinkHandlerModel> ArcIntentHelperBridge::CreateModel( std::unique_ptr<ash::LinkHandlerModel> ArcIntentHelperBridge::CreateModel(
const GURL& url) { const GURL& url) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
......
...@@ -56,6 +56,7 @@ class ArcIntentHelperBridge ...@@ -56,6 +56,7 @@ class ArcIntentHelperBridge
void AddObserver(ArcIntentHelperObserver* observer); void AddObserver(ArcIntentHelperObserver* observer);
void RemoveObserver(ArcIntentHelperObserver* observer); void RemoveObserver(ArcIntentHelperObserver* observer);
bool HasObserver(ArcIntentHelperObserver* observer) const;
// InstanceHolder<mojom::IntentHelperInstance>::Observer // InstanceHolder<mojom::IntentHelperInstance>::Observer
void OnInstanceReady() override; void OnInstanceReady() override;
......
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