| Index: chrome/browser/android/banners/app_banner_settings_helper.cc
|
| diff --git a/chrome/browser/android/banners/app_banner_settings_helper.cc b/chrome/browser/android/banners/app_banner_settings_helper.cc
|
| deleted file mode 100644
|
| index ed3298ccbb948de4c283d71f759ae221b8c7b62f..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/android/banners/app_banner_settings_helper.cc
|
| +++ /dev/null
|
| @@ -1,112 +0,0 @@
|
| -// Copyright 2014 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.
|
| -
|
| -#include "chrome/browser/android/banners/app_banner_settings_helper.h"
|
| -
|
| -#include <algorithm>
|
| -#include <string>
|
| -
|
| -#include "chrome/browser/profiles/profile.h"
|
| -#include "components/content_settings/core/browser/host_content_settings_map.h"
|
| -#include "components/content_settings/core/common/content_settings_pattern.h"
|
| -#include "content/public/browser/web_contents.h"
|
| -#include "url/gurl.h"
|
| -
|
| -namespace {
|
| -std::string SanitizePackageName(std::string package_name) {
|
| - // DictionaryValue doesn't allow '.' in the keys. Replace them with ' '
|
| - // because you can't have a package name with a ' ' in it.
|
| - std::replace(package_name.begin(), package_name.end(), '.', ' ');
|
| - return package_name;
|
| -}
|
| -
|
| -// Max number of apps that a particular site may show a banner for.
|
| -const size_t kMaxAppsPerSite = 3;
|
| -} // namespace
|
| -
|
| -bool AppBannerSettingsHelper::IsAllowed(content::WebContents* web_contents,
|
| - const GURL& origin_url,
|
| - const std::string& package_name) {
|
| - std::string sanitized_package_name = SanitizePackageName(package_name);
|
| - Profile* profile =
|
| - Profile::FromBrowserContext(web_contents->GetBrowserContext());
|
| - if (profile->IsOffTheRecord() || web_contents->GetURL() != origin_url ||
|
| - sanitized_package_name.empty()) {
|
| - return false;
|
| - }
|
| -
|
| - // Check if this combination has been previously disabled.
|
| - HostContentSettingsMap* settings = profile->GetHostContentSettingsMap();
|
| - if (!settings)
|
| - return false;
|
| - scoped_ptr<base::Value> value =
|
| - settings->GetWebsiteSetting(origin_url,
|
| - origin_url,
|
| - CONTENT_SETTINGS_TYPE_APP_BANNER,
|
| - std::string(),
|
| - NULL);
|
| - if (!value.get()) {
|
| - // We've never blocked a banner on this site.
|
| - return true;
|
| - } else if (value->IsType(base::Value::TYPE_DICTIONARY)) {
|
| - // We expect to get a Dictionary back, where the keys are the package names.
|
| - base::DictionaryValue* banner_dict =
|
| - static_cast<base::DictionaryValue*>(value.get());
|
| - bool is_allowed = false;
|
| - if (banner_dict->GetBoolean(sanitized_package_name, &is_allowed)) {
|
| - return is_allowed;
|
| - } else {
|
| - return banner_dict->size() < ::kMaxAppsPerSite;
|
| - }
|
| - } else {
|
| - // Somehow the value we got back is not a dictionary (e.g. the settings were
|
| - // corrupted by malware). Try to clear it out.
|
| - ContentSettingsPattern pattern(ContentSettingsPattern::FromURL(origin_url));
|
| - if (pattern.IsValid()) {
|
| - settings->SetWebsiteSetting(pattern,
|
| - ContentSettingsPattern::Wildcard(),
|
| - CONTENT_SETTINGS_TYPE_APP_BANNER,
|
| - std::string(),
|
| - NULL);
|
| - return true;
|
| - }
|
| - }
|
| -
|
| - return false;
|
| -}
|
| -
|
| -void AppBannerSettingsHelper::Block(content::WebContents* web_contents,
|
| - const GURL& origin_url,
|
| - const std::string& package_name) {
|
| - std::string sanitized_package_name = SanitizePackageName(package_name);
|
| - DCHECK(!sanitized_package_name.empty());
|
| -
|
| - Profile* profile =
|
| - Profile::FromBrowserContext(web_contents->GetBrowserContext());
|
| - HostContentSettingsMap* settings = profile->GetHostContentSettingsMap();
|
| - ContentSettingsPattern pattern(ContentSettingsPattern::FromURL(origin_url));
|
| - if (!settings || !pattern.IsValid())
|
| - return;
|
| -
|
| - scoped_ptr<base::Value> value =
|
| - settings->GetWebsiteSetting(origin_url,
|
| - origin_url,
|
| - CONTENT_SETTINGS_TYPE_APP_BANNER,
|
| - std::string(),
|
| - NULL);
|
| - base::DictionaryValue* banner_dict = NULL;
|
| - if (value.get() && value->IsType(base::Value::TYPE_DICTIONARY)) {
|
| - banner_dict = static_cast<base::DictionaryValue*>(value.release());
|
| - } else {
|
| - banner_dict = new base::DictionaryValue();
|
| - }
|
| -
|
| - // Update the setting and save it back.
|
| - banner_dict->SetBoolean(sanitized_package_name, false);
|
| - settings->SetWebsiteSetting(pattern,
|
| - ContentSettingsPattern::Wildcard(),
|
| - CONTENT_SETTINGS_TYPE_APP_BANNER,
|
| - std::string(),
|
| - banner_dict);
|
| -}
|
|
|