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

Unified Diff: components/physical_web/webui/physical_web_base_message_handler.cc

Issue 2741823002: Update Physical Web WebUI to show new results automatically (Closed)
Patch Set: Created 3 years, 9 months 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/physical_web/webui/physical_web_base_message_handler.cc
diff --git a/components/physical_web/webui/physical_web_base_message_handler.cc b/components/physical_web/webui/physical_web_base_message_handler.cc
index 68aeca7791e14c274f27283fd78eb9726cfa9b22..75ed1a550411778df40334d1b53a10ef0f4a4f85 100644
--- a/components/physical_web/webui/physical_web_base_message_handler.cc
+++ b/components/physical_web/webui/physical_web_base_message_handler.cc
@@ -13,9 +13,26 @@
namespace physical_web_ui {
-PhysicalWebBaseMessageHandler::PhysicalWebBaseMessageHandler() {}
+PhysicalWebBaseMessageHandler::PhysicalWebBaseMessageHandler()
+ : data_source_(nullptr) {}
-PhysicalWebBaseMessageHandler::~PhysicalWebBaseMessageHandler() = default;
+PhysicalWebBaseMessageHandler::~PhysicalWebBaseMessageHandler() {
+ if (data_source_)
+ data_source_->UnregisterListener(this);
+}
+
+void PhysicalWebBaseMessageHandler::OnFound(const GURL& url) {
+ HandleRequestNearbyURLs(nullptr);
+}
+
+void PhysicalWebBaseMessageHandler::OnLost(const GURL& url) {
+ // do nothing
+}
+
+void PhysicalWebBaseMessageHandler::OnDistanceChanged(
+ const GURL& url, double distance_estimate) {
+ // do nothing
+}
void PhysicalWebBaseMessageHandler::RegisterMessages() {
RegisterMessageCallback(
@@ -27,6 +44,10 @@ void PhysicalWebBaseMessageHandler::RegisterMessages() {
base::BindRepeating(
&PhysicalWebBaseMessageHandler::HandlePhysicalWebItemClicked,
base::Unretained(this)));
+
+ data_source_ = GetPhysicalWebDataSource();
+ if (data_source_)
+ data_source_->RegisterListener(this);
}
void PhysicalWebBaseMessageHandler::HandleRequestNearbyURLs(
@@ -36,9 +57,19 @@ void PhysicalWebBaseMessageHandler::HandleRequestNearbyURLs(
std::unique_ptr<physical_web::MetadataList> metadata_list =
GetPhysicalWebDataSource()->GetMetadataList();
+ // Append new metadata at the end of the list.
+ for (const auto& metadata_list_item : *metadata_list) {
+ const std::string& group_id = metadata_list_item.group_id;
+ if (metadata_map_.find(group_id) == metadata_map_.end()) {
+ ordered_group_ids_.push_back(group_id);
+ metadata_map_.emplace(group_id, metadata_list_item);
+ }
+ }
+
auto metadata = base::MakeUnique<base::ListValue>();
int index = 0;
- for (const auto& metadata_list_item : *metadata_list) {
+ for (const auto& group_id : ordered_group_ids_) {
+ auto metadata_list_item = metadata_map_[group_id];
auto metadata_item = base::MakeUnique<base::DictionaryValue>();
metadata_item->SetString(physical_web_ui::kResolvedUrl,
metadata_list_item.resolved_url.spec());

Powered by Google App Engine
This is Rietveld 408576698