Skip to content

Commit

Permalink
[chrome://invalidations] Display topics subscription status when requ…
Browse files Browse the repository at this point in the history
…ested.

Today chrome://invalidations page doesn't allow to query subscription
status. This CL adds the topics subscription status information to the
detailed debug status request.

Bug: 801985
Change-Id: I3b65d381e6e3a7fb7bf93b6cfa57db774eb45812
Reviewed-on: https://chromium-review.googlesource.com/c/1402812
Commit-Queue: Tatiana Gornak <melandory@chromium.org>
Reviewed-by: Mohamed Amir Yosef <mamir@chromium.org>
Cr-Commit-Position: refs/heads/master@{#621652}
  • Loading branch information
Tanja Gornak authored and Commit Bot committed Jan 10, 2019
1 parent 2380cc0 commit f2e1f0d
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 13 deletions.
30 changes: 18 additions & 12 deletions chrome/browser/ui/webui/invalidations_message_handler.cc
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,21 @@ namespace syncer {
class ObjectIdInvalidationMap;
} // namespace syncer

namespace {

invalidation::ProfileInvalidationProvider* GetInvalidationProvider(
Profile* profile) {
if (base::FeatureList::IsEnabled(invalidation::switches::kFCMInvalidations)) {
return invalidation::ProfileInvalidationProviderFactory::GetForProfile(
profile);
} else {
return invalidation::DeprecatedProfileInvalidationProviderFactory::
GetForProfile(profile);
}
}

} // namespace

InvalidationsMessageHandler::InvalidationsMessageHandler()
: logger_(NULL), weak_ptr_factory_(this) {}

Expand All @@ -45,16 +60,8 @@ void InvalidationsMessageHandler::RegisterMessages() {
}

void InvalidationsMessageHandler::UIReady(const base::ListValue* args) {
invalidation::ProfileInvalidationProvider* invalidation_provider;
Profile* profile = Profile::FromWebUI(web_ui());
if (base::FeatureList::IsEnabled(invalidation::switches::kFCMInvalidations)) {
invalidation_provider =
invalidation::ProfileInvalidationProviderFactory::GetForProfile(
profile);
} else {
invalidation_provider = invalidation::
DeprecatedProfileInvalidationProviderFactory::GetForProfile(profile);
}
invalidation::ProfileInvalidationProvider* invalidation_provider =
GetInvalidationProvider(Profile::FromWebUI(web_ui()));
if (invalidation_provider) {
logger_ = invalidation_provider->GetInvalidationService()->
GetInvalidationLogger();
Expand All @@ -67,8 +74,7 @@ void InvalidationsMessageHandler::UIReady(const base::ListValue* args) {
void InvalidationsMessageHandler::HandleRequestDetailedStatus(
const base::ListValue* args) {
invalidation::ProfileInvalidationProvider* invalidation_provider =
invalidation::DeprecatedProfileInvalidationProviderFactory::GetForProfile(
Profile::FromWebUI(web_ui()));
GetInvalidationProvider(Profile::FromWebUI(web_ui()));
if (invalidation_provider) {
invalidation_provider->GetInvalidationService()->RequestDetailedStatus(
base::Bind(&InvalidationsMessageHandler::OnDetailedStatus,
Expand Down
21 changes: 21 additions & 0 deletions components/invalidation/impl/fcm_invalidation_listener.cc
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,11 @@ void FCMInvalidationListener::DoRegistrationUpdate() {
object_id_invalidation_map));
}

void FCMInvalidationListener::RequestDetailedStatus(
base::Callback<void(const base::DictionaryValue&)> callback) const {
callback.Run(*CollectDebugData());
}

void FCMInvalidationListener::StopForTest() {
Stop();
}
Expand Down Expand Up @@ -231,4 +236,20 @@ void FCMInvalidationListener::OnSubscriptionChannelStateChanged(
EmitStateChange();
}

std::unique_ptr<base::DictionaryValue>
FCMInvalidationListener::CollectDebugData() const {
std::unique_ptr<base::DictionaryValue> return_value(
new base::DictionaryValue());
// For each topic record if the subscription was successful.
TopicSet active_topics =
per_user_topic_registration_manager_->GetRegisteredIds();
for (const Topic& topic : registered_topics_) {
std::string status = "Registered";
if (active_topics.count(topic) == 0)
status = "Unregistered";
return_value->SetString(topic, status);
}
return return_value;
}

} // namespace syncer
3 changes: 3 additions & 0 deletions components/invalidation/impl/fcm_invalidation_listener.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,9 @@ class FCMInvalidationListener : public InvalidationListener,

void DoRegistrationUpdate();

void RequestDetailedStatus(
base::Callback<void(const base::DictionaryValue&)> callback) const;

void StopForTest();

TopicSet GetRegisteredIdsForTest() const;
Expand Down
4 changes: 3 additions & 1 deletion components/invalidation/impl/fcm_invalidator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,9 @@ void FCMInvalidator::OnInvalidate(

void FCMInvalidator::RequestDetailedStatus(
base::RepeatingCallback<void(const base::DictionaryValue&)> callback)
const {}
const {
invalidation_listener_.RequestDetailedStatus(callback);
}

void FCMInvalidator::OnInvalidatorStateChange(InvalidatorState state) {
registrar_.UpdateInvalidatorState(state);
Expand Down

0 comments on commit f2e1f0d

Please sign in to comment.