Index: chrome/browser/banners/app_banner_settings_helper.h |
diff --git a/chrome/browser/banners/app_banner_settings_helper.h b/chrome/browser/banners/app_banner_settings_helper.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..241e592c12f86aa4807d918e7c486ee2b6f47e34 |
--- /dev/null |
+++ b/chrome/browser/banners/app_banner_settings_helper.h |
@@ -0,0 +1,66 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
Lei Zhang
2015/02/02 19:50:13
It's 2015
benwells
2015/02/03 02:33:45
This file has been moved from chrome/browser/andro
Lei Zhang
2015/02/03 02:39:38
Oh, for some reason the file's status is "A" inste
|
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROME_BROWSER_BANNERS_APP_BANNER_SETTINGS_HELPER_H_ |
+#define CHROME_BROWSER_BANNERS_APP_BANNER_SETTINGS_HELPER_H_ |
+ |
+#include <string> |
+#include <vector> |
+ |
+#include "base/macros.h" |
+#include "base/time/time.h" |
+ |
+namespace content { |
+class WebContents; |
+} // namespace content |
+ |
+class GURL; |
+ |
+// Utility class for reading and updating ContentSettings for app banners. |
+class AppBannerSettingsHelper { |
+ public: |
+ // TODO(benwells): Use this method to implement smarter triggering logic. |
+ // See http://crbug.com/452825. |
+ // Records that a banner could have been shown for the given package or start |
+ // url. |
+ // |
+ // These events are used to decide when banners should be shown, using a |
+ // heuristic based on how many different days in a recent period of time (for |
+ // example the past two weeks) the banner could have been shown. The desired |
+ // effect is to have banners appear once a user has demonstrated an ongoing |
+ // relationship with the app. |
+ // |
+ // At most one event is stored per day, and events outside the window the |
+ // heuristic uses are discarded. Local times are used to enforce these rules, |
+ // to ensure what we count as a day matches what the user perceives to be |
+ // days. |
+ static void RecordCouldShowBannerEvent( |
+ content::WebContents* web_contents, |
+ const GURL& origin_url, |
+ const std::string& package_name_or_start_url, |
+ base::Time time); |
+ |
+ // Gets the could have been shown events that are stored for the given package |
+ // or start url. This is only used for testing. |
+ static std::vector<base::Time> GetCouldShowBannerEvents( |
+ content::WebContents* web_contents, |
+ const GURL& origin_url, |
+ const std::string& package_name_or_start_url); |
+ |
+ // Checks if a URL is allowed to show a banner for the given package or start |
+ // url. |
+ static bool IsAllowed(content::WebContents* web_contents, |
+ const GURL& origin_url, |
+ const std::string& package_name_or_start_url); |
+ |
+ // Blocks a URL from showing a banner for the given package or start url. |
+ static void Block(content::WebContents* web_contents, |
+ const GURL& origin_url, |
+ const std::string& package_name_or_start_url); |
+ |
+ private: |
+ DISALLOW_IMPLICIT_CONSTRUCTORS(AppBannerSettingsHelper); |
+}; |
+ |
+#endif // CHROME_BROWSER_BANNERS_APP_BANNER_SETTINGS_HELPER_H_ |