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

Side by Side Diff: chrome/browser/ui/webui/engagement/site_engagement_ui.cc

Issue 2788413003: Add SiteEngagementService::GetAllDetails(), to return detailed scores. (Closed)
Patch Set: Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/engagement/site_engagement_ui.h" 5 #include "chrome/browser/ui/webui/engagement/site_engagement_ui.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "chrome/browser/engagement/site_engagement_service.h" 12 #include "chrome/browser/engagement/site_engagement_service.h"
13 #include "chrome/browser/profiles/profile.h" 13 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/common/url_constants.h" 14 #include "chrome/common/url_constants.h"
15 #include "chrome/grit/browser_resources.h" 15 #include "chrome/grit/browser_resources.h"
16 #include "content/public/browser/web_ui.h" 16 #include "content/public/browser/web_ui.h"
17 #include "content/public/browser/web_ui_controller.h" 17 #include "content/public/browser/web_ui_controller.h"
18 #include "content/public/browser/web_ui_data_source.h" 18 #include "content/public/browser/web_ui_data_source.h"
19 #include "mojo/public/cpp/bindings/binding.h" 19 #include "mojo/public/cpp/bindings/binding.h"
20 20
21 namespace { 21 namespace {
22 22
23 // Implementation of mojom::SiteEngagementUIHandler that gets information from 23 // Implementation of mojom::SiteEngagementDetailsProvider that gets information
24 // the 24 // from the SiteEngagementService to provide data for the WebUI.
25 // SiteEngagementService to provide data for the WebUI. 25 class SiteEngagementDetailsProviderImpl
26 class SiteEngagementUIHandlerImpl : public mojom::SiteEngagementUIHandler { 26 : public mojom::SiteEngagementDetailsProvider {
27 public: 27 public:
28 // SiteEngagementUIHandlerImpl is deleted when the supplied pipe is destroyed. 28 // Instance is deleted when the supplied pipe is destroyed.
29 SiteEngagementUIHandlerImpl( 29 SiteEngagementDetailsProviderImpl(
30 Profile* profile, 30 Profile* profile,
31 mojo::InterfaceRequest<mojom::SiteEngagementUIHandler> request) 31 mojo::InterfaceRequest<mojom::SiteEngagementDetailsProvider> request)
32 : profile_(profile), binding_(this, std::move(request)) { 32 : profile_(profile), binding_(this, std::move(request)) {
33 DCHECK(profile_); 33 DCHECK(profile_);
34 } 34 }
35 35
36 ~SiteEngagementUIHandlerImpl() override {} 36 ~SiteEngagementDetailsProviderImpl() override {}
37 37
38 // mojom::SiteEngagementUIHandler overrides: 38 // mojom::SiteEngagementDetailsProvider overrides:
39 void GetSiteEngagementInfo( 39 void GetSiteEngagementDetails(
40 const GetSiteEngagementInfoCallback& callback) override { 40 const GetSiteEngagementDetailsCallback& callback) override {
41 SiteEngagementService* service = SiteEngagementService::Get(profile_); 41 SiteEngagementService* service = SiteEngagementService::Get(profile_);
42 std::map<GURL, double> score_map = service->GetScoreMap(); 42 std::vector<mojom::SiteEngagementDetails> scores =
43 service->GetScoreDetails();
43 44
44 std::vector<mojom::SiteEngagementInfoPtr> engagement_info; 45 std::vector<mojom::SiteEngagementDetailsPtr> engagement_info;
45 engagement_info.reserve(score_map.size()); 46 engagement_info.reserve(scores.size());
46 for (const auto& info : score_map) { 47 for (const auto& info : scores) {
47 mojom::SiteEngagementInfoPtr origin_info( 48 mojom::SiteEngagementDetailsPtr origin_info(
48 mojom::SiteEngagementInfo::New()); 49 mojom::SiteEngagementDetails::New());
49 origin_info->origin = info.first; 50 *origin_info = info;
50 origin_info->score = info.second;
51 engagement_info.push_back(std::move(origin_info)); 51 engagement_info.push_back(std::move(origin_info));
52 } 52 }
53 53
54 callback.Run(std::move(engagement_info)); 54 callback.Run(std::move(engagement_info));
55 } 55 }
56 56
57 void SetSiteEngagementScoreForOrigin(const GURL& origin, 57 void SetSiteEngagementBaseScoreForUrl(const GURL& origin,
58 double score) override { 58 double score) override {
59 if (!origin.is_valid() || score < 0 || 59 if (!origin.is_valid() || score < 0 ||
60 score > SiteEngagementService::GetMaxPoints() || std::isnan(score)) { 60 score > SiteEngagementService::GetMaxPoints() || std::isnan(score)) {
61 return; 61 return;
62 } 62 }
63 63
64 SiteEngagementService* service = SiteEngagementService::Get(profile_); 64 SiteEngagementService* service = SiteEngagementService::Get(profile_);
65 service->ResetBaseScoreForURL(origin, score); 65 service->ResetBaseScoreForURL(origin, score);
66 } 66 }
67 67
68 private: 68 private:
69 // The Profile* handed to us in our constructor. 69 // The Profile* handed to us in our constructor.
70 Profile* profile_; 70 Profile* profile_;
71 71
72 mojo::Binding<mojom::SiteEngagementUIHandler> binding_; 72 mojo::Binding<mojom::SiteEngagementDetailsProvider> binding_;
73 73
74 DISALLOW_COPY_AND_ASSIGN(SiteEngagementUIHandlerImpl); 74 DISALLOW_COPY_AND_ASSIGN(SiteEngagementDetailsProviderImpl);
75 }; 75 };
76 76
77 } // namespace 77 } // namespace
78 78
79 SiteEngagementUI::SiteEngagementUI(content::WebUI* web_ui) 79 SiteEngagementUI::SiteEngagementUI(content::WebUI* web_ui)
80 : MojoWebUIController<mojom::SiteEngagementUIHandler>(web_ui) { 80 : MojoWebUIController<mojom::SiteEngagementDetailsProvider>(web_ui) {
81 // Set up the chrome://site-engagement/ source. 81 // Set up the chrome://site-engagement/ source.
82 std::unique_ptr<content::WebUIDataSource> source( 82 std::unique_ptr<content::WebUIDataSource> source(
83 content::WebUIDataSource::Create(chrome::kChromeUISiteEngagementHost)); 83 content::WebUIDataSource::Create(chrome::kChromeUISiteEngagementHost));
84 source->AddResourcePath("site_engagement.js", IDR_SITE_ENGAGEMENT_JS); 84 source->AddResourcePath("site_engagement.js", IDR_SITE_ENGAGEMENT_JS);
85 source->AddResourcePath("chrome/browser/engagement/site_engagement.mojom", 85 source->AddResourcePath(
86 IDR_SITE_ENGAGEMENT_MOJO_JS); 86 "chrome/browser/engagement/site_engagement_details.mojom",
87 IDR_SITE_ENGAGEMENT_MOJO_JS);
87 source->AddResourcePath("url/mojo/url.mojom", IDR_URL_MOJO_JS); 88 source->AddResourcePath("url/mojo/url.mojom", IDR_URL_MOJO_JS);
88 source->SetDefaultResource(IDR_SITE_ENGAGEMENT_HTML); 89 source->SetDefaultResource(IDR_SITE_ENGAGEMENT_HTML);
89 source->UseGzip(std::unordered_set<std::string>()); 90 source->UseGzip(std::unordered_set<std::string>());
90 content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), source.release()); 91 content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), source.release());
91 } 92 }
92 93
93 SiteEngagementUI::~SiteEngagementUI() {} 94 SiteEngagementUI::~SiteEngagementUI() {}
94 95
95 void SiteEngagementUI::BindUIHandler( 96 void SiteEngagementUI::BindUIHandler(
96 mojo::InterfaceRequest<mojom::SiteEngagementUIHandler> request) { 97 mojo::InterfaceRequest<mojom::SiteEngagementDetailsProvider> request) {
97 ui_handler_.reset(new SiteEngagementUIHandlerImpl( 98 ui_handler_.reset(new SiteEngagementDetailsProviderImpl(
98 Profile::FromWebUI(web_ui()), std::move(request))); 99 Profile::FromWebUI(web_ui()), std::move(request)));
99 } 100 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698