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

Unified Diff: chrome/browser/android/preferences/website_preference_bridge.cc

Issue 1465363002: [Storage] Android - ManageSpace UI, Important Origins, and CBD Dialog (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Android Java Hookup Created 4 years, 10 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: chrome/browser/android/preferences/website_preference_bridge.cc
diff --git a/chrome/browser/android/preferences/website_preference_bridge.cc b/chrome/browser/android/preferences/website_preference_bridge.cc
index 070514a98cd9249014f6ded70a41d745b7c55377..b3ac845e4ef348e375c8658763e6c804abe3fd70 100644
--- a/chrome/browser/android/preferences/website_preference_bridge.cc
+++ b/chrome/browser/android/preferences/website_preference_bridge.cc
@@ -4,6 +4,8 @@
#include "chrome/browser/android/preferences/website_preference_bridge.h"
+#include <algorithm>
+
#include "base/android/jni_android.h"
#include "base/android/jni_string.h"
#include "base/android/scoped_java_ref.h"
@@ -18,6 +20,7 @@
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/content_settings/tab_specific_content_settings.h"
#include "chrome/browser/content_settings/web_site_settings_uma_util.h"
+#include "chrome/browser/engagement/site_engagement_service.h"
#include "chrome/browser/notifications/desktop_notification_profile_util.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
@@ -656,25 +659,34 @@ class LocalStorageInfoReadyCallback {
}
void OnLocalStorageModelInfoLoaded(
+ Profile* profile,
const std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>&
local_storage_info) {
ScopedJavaLocalRef<jobject> map =
Java_WebsitePreferenceBridge_createLocalStorageInfoMap(env_);
+ SiteEngagementService* service = SiteEngagementService::Get(profile);
+ std::map<GURL, double> score_map = service->GetScoreMap();
std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>::const_iterator
i;
for (i = local_storage_info.begin(); i != local_storage_info.end(); ++i) {
ScopedJavaLocalRef<jstring> full_origin =
ConvertUTF8ToJavaString(env_, i->origin_url.spec());
+ std::string origin_str = i->origin_url.GetOrigin().spec();
+ double engagement_score = 0;
+ auto engagement_score_it = score_map.find(i->origin_url.GetOrigin());
+ if (engagement_score_it != score_map.end()) {
+ engagement_score = engagement_score_it->second;
+ }
// Remove the trailing backslash so the origin is matched correctly in
// SingleWebsitePreferences.mergePermissionInfoForTopLevelOrigin.
- std::string origin_str = i->origin_url.GetOrigin().spec();
DCHECK(origin_str[origin_str.size() - 1] == '/');
origin_str = origin_str.substr(0, origin_str.size() - 1);
ScopedJavaLocalRef<jstring> origin =
ConvertUTF8ToJavaString(env_, origin_str);
Java_WebsitePreferenceBridge_insertLocalStorageInfoIntoMap(
- env_, map.obj(), origin.obj(), full_origin.obj(), i->size);
+ env_, map.obj(), origin.obj(), full_origin.obj(), i->size,
+ engagement_score);
}
Java_LocalStorageInfoReadyCallback_onLocalStorageInfoReady(
@@ -699,6 +711,54 @@ class LocalStorageInfoReadyCallback {
// helpers keep a reference to themselves for the duration of their tasks,
// which includes callback invocation.
+static void FetchImportantOriginInfo(
+ JNIEnv* env,
+ const JavaParamRef<jclass>& clazz,
+ const JavaParamRef<jobject>& java_callback) {
+ Profile* profile = ProfileManager::GetActiveUserProfile();
+ ScopedJavaLocalRef<jobject> map =
+ Java_WebsitePreferenceBridge_createImportantOriginInfoMap(env);
+ ScopedJavaLocalRef<jobject> list =
+ Java_WebsitePreferenceBridge_createImportantOriginList(env);
+ SiteEngagementService* service = SiteEngagementService::Get(profile);
+ std::map<GURL, double> score_map = service->GetScoreMap();
+ std::vector<std::pair<GURL, double>> ranked_origins;
Finnur 2016/03/03 14:15:44 Shouldn't this be named top_ranking_origins, or so
dmurph 2016/04/26 21:43:13 chagned.
+
+ for (const auto& url_engagement_pair : score_map) {
+ if (!service->IsEngagementAtLeast(
+ url_engagement_pair.first,
+ SiteEngagementService::ENGAGEMENT_LEVEL_MEDIUM)) {
+ continue;
+ }
+ ranked_origins.push_back(url_engagement_pair);
+ }
+
+ std::sort(
+ ranked_origins.begin(), ranked_origins.end(),
+ [](const std::pair<GURL, double>& a, const std::pair<GURL, double>& b) {
+ return a.second > b.second;
+ });
+ ranked_origins.resize(std::min(ranked_origins.size(), 5u));
Finnur 2016/03/03 14:15:44 Um... this is non-obvious. Can you add a comment o
dmurph 2016/04/26 21:43:13 Moved to a separate class in previous patch.
+
+ for (const auto& url_engagement_pair : ranked_origins) {
+ // Remove the trailing backslash so the origin is matched correctly in
+ // SingleWebsitePreferences.mergePermissionInfoForTopLevelOrigin, and with
+ // maps returned in FetchLocalStorageInfo.
+ std::string origin_str = url_engagement_pair.first.GetOrigin().spec();
+ DCHECK(origin_str[origin_str.size() - 1] == '/');
+ origin_str = origin_str.substr(0, origin_str.size() - 1);
+ ScopedJavaLocalRef<jstring> origin =
+ ConvertUTF8ToJavaString(env, origin_str);
+ Java_WebsitePreferenceBridge_insertImportantOriginInfoIntoMap(
+ env, map.obj(), origin.obj(), 0, url_engagement_pair.second);
+ Java_WebsitePreferenceBridge_insertImportantOriginIntoList(env, list.obj(),
+ origin.obj());
+ }
+
+ Java_ImportantOriginsReadyCallback_onImportantOriginsReady(
+ env, java_callback.obj(), list.obj(), map.obj());
+}
+
static void FetchLocalStorageInfo(JNIEnv* env,
const JavaParamRef<jclass>& clazz,
const JavaParamRef<jobject>& java_callback) {
@@ -710,7 +770,7 @@ static void FetchLocalStorageInfo(JNIEnv* env,
new LocalStorageInfoReadyCallback(java_callback);
local_storage_helper->StartFetching(
base::Bind(&LocalStorageInfoReadyCallback::OnLocalStorageModelInfoLoaded,
- base::Unretained(local_storage_callback)));
+ base::Unretained(local_storage_callback), profile));
}
static void FetchStorageInfo(JNIEnv* env,

Powered by Google App Engine
This is Rietveld 408576698