| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_ENGAGEMENT_IMPORTANT_SITES_UTIL_H_ |
| #define CHROME_BROWSER_ENGAGEMENT_IMPORTANT_SITES_UTIL_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include "base/macros.h" |
| #include "url/gurl.h" |
| |
| class Profile; |
| |
| namespace user_prefs { |
| class PrefRegistrySyncable; |
| } |
| |
| // Helper methods for important sites. |
| // All methods should be used on the UI thread. |
| class ImportantSitesUtil { |
| public: |
| #if defined(OS_ANDROID) |
| static const int kMaxImportantSites = 5; |
| #else |
| static const int kMaxImportantSites = 10; |
| #endif |
| |
| struct ImportantDomainInfo { |
| std::string registerable_domain; |
| GURL example_origin; |
| double engagement_score = 0; |
| int32_t reason_bitfield = 0; |
| // |usage| has to be initialized by ImportantSitesUsageCounter before it |
| // will contain the number of bytes used for quota and localstorage. |
| int64_t usage = 0; |
| }; |
| |
| // Do not change the values here, as they are used for UMA histograms. |
| enum ImportantReason { |
| ENGAGEMENT = 0, |
| DURABLE = 1, |
| BOOKMARKS = 2, |
| HOME_SCREEN = 3, |
| NOTIFICATIONS = 4, |
| REASON_BOUNDARY |
| }; |
| |
| static std::string GetRegisterableDomainOrIP(const GURL& url); |
| |
| static std::string GetRegisterableDomainOrIPFromHost(base::StringPiece host); |
| |
| static bool IsDialogDisabled(Profile* profile); |
| |
| static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); |
| |
| // This returns the top |<=max_results| important registrable domains. This |
| // uses site engagement and notifications to generate the list. |max_results| |
| // is assumed to be small. |
| // See net/base/registry_controlled_domains/registry_controlled_domain.h for |
| // more details on registrable domains and the current list of effective |
| // eTLDs. |
| static std::vector<ImportantDomainInfo> GetImportantRegisterableDomains( |
| Profile* profile, |
| size_t max_results); |
| |
| // Record the sites that the user chose to blacklist from clearing (in the |
| // Clear Browsing Dialog) and the sites they ignored. The blacklisted sites |
| // are NOT cleared as they are 'blacklisted' from the clear operation. |
| // This records metrics for blacklisted and ignored sites and removes any |
| // 'ignored' sites from our important sites list if they were ignored 3 times |
| // in a row. |
| static void RecordBlacklistedAndIgnoredImportantSites( |
| Profile* profile, |
| const std::vector<std::string>& blacklisted_sites, |
| const std::vector<int32_t>& blacklisted_sites_reason_bitfield, |
| const std::vector<std::string>& ignored_sites, |
| const std::vector<int32_t>& ignored_sites_reason_bitfield); |
| |
| // This marks the given origin as important for testing. Note: This changes |
| // the score requirements for the Site Engagement Service, so ONLY call for |
| // testing. |
| static void MarkOriginAsImportantForTesting(Profile* profile, |
| const GURL& origin); |
| |
| private: |
| DISALLOW_IMPLICIT_CONSTRUCTORS(ImportantSitesUtil); |
| }; |
| |
| #endif // CHROME_BROWSER_ENGAGEMENT_IMPORTANT_SITES_UTIL_H_ |