| Index: chrome/browser/policy/url_blacklist_manager.h
|
| diff --git a/chrome/browser/policy/url_blacklist_manager.h b/chrome/browser/policy/url_blacklist_manager.h
|
| deleted file mode 100644
|
| index b4262e4dbae21c9bea610d87150d454b85704206..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/policy/url_blacklist_manager.h
|
| +++ /dev/null
|
| @@ -1,226 +0,0 @@
|
| -// Copyright (c) 2012 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_POLICY_URL_BLACKLIST_MANAGER_H_
|
| -#define CHROME_BROWSER_POLICY_URL_BLACKLIST_MANAGER_H_
|
| -
|
| -#include <map>
|
| -#include <string>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/callback_forward.h"
|
| -#include "base/compiler_specific.h"
|
| -#include "base/containers/hash_tables.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "base/prefs/pref_change_registrar.h"
|
| -#include "components/url_matcher/url_matcher.h"
|
| -#include "url/gurl.h"
|
| -
|
| -class PrefService;
|
| -
|
| -namespace base {
|
| -class ListValue;
|
| -class SequencedTaskRunner;
|
| -}
|
| -
|
| -namespace net {
|
| -class URLRequest;
|
| -}
|
| -
|
| -namespace user_prefs {
|
| -class PrefRegistrySyncable;
|
| -}
|
| -
|
| -namespace policy {
|
| -
|
| -// Contains a set of filters to block and allow certain URLs, and matches GURLs
|
| -// against this set. The filters are currently kept in memory.
|
| -class URLBlacklist {
|
| - public:
|
| - // This is meant to be bound to URLFixerUpper::SegmentURL. See that function
|
| - // for documentation on the parameters and return value.
|
| - typedef std::string (*SegmentURLCallback)(const std::string&,
|
| - url_parse::Parsed*);
|
| -
|
| - explicit URLBlacklist(SegmentURLCallback segment_url);
|
| - virtual ~URLBlacklist();
|
| -
|
| - // Allows or blocks URLs matching one of the filters, depending on |allow|.
|
| - void AddFilters(bool allow, const base::ListValue* filters);
|
| -
|
| - // URLs matching one of the |filters| will be blocked. The filter format is
|
| - // documented at
|
| - // http://www.chromium.org/administrators/url-blacklist-filter-format.
|
| - void Block(const base::ListValue* filters);
|
| -
|
| - // URLs matching one of the |filters| will be allowed. If a URL is both
|
| - // Blocked and Allowed, Allow takes precedence.
|
| - void Allow(const base::ListValue* filters);
|
| -
|
| - // Returns true if the URL is blocked.
|
| - bool IsURLBlocked(const GURL& url) const;
|
| -
|
| - // Returns the number of items in the list.
|
| - size_t Size() const;
|
| -
|
| - // Splits a URL filter into its components. A GURL isn't used because these
|
| - // can be invalid URLs e.g. "google.com".
|
| - // Returns false if the URL couldn't be parsed.
|
| - // The |host| is preprocessed so it can be passed to URLMatcher for the
|
| - // appropriate condition.
|
| - // The optional username and password are ignored.
|
| - // |match_subdomains| specifies whether the filter should include subdomains
|
| - // of the hostname (if it is one.)
|
| - // |port| is 0 if none is explicitly defined.
|
| - // |path| does not include query parameters.
|
| - static bool FilterToComponents(SegmentURLCallback segment_url,
|
| - const std::string& filter,
|
| - std::string* scheme,
|
| - std::string* host,
|
| - bool* match_subdomains,
|
| - uint16* port,
|
| - std::string* path);
|
| -
|
| - // Creates a condition set that can be used with the |url_matcher|. |id| needs
|
| - // to be a unique number that will be returned by the |url_matcher| if the URL
|
| - // matches that condition set.
|
| - static scoped_refptr<url_matcher::URLMatcherConditionSet> CreateConditionSet(
|
| - url_matcher::URLMatcher* url_matcher,
|
| - url_matcher::URLMatcherConditionSet::ID id,
|
| - const std::string& scheme,
|
| - const std::string& host,
|
| - bool match_subdomains,
|
| - uint16 port,
|
| - const std::string& path);
|
| -
|
| - private:
|
| - struct FilterComponents;
|
| -
|
| - // Returns true if |lhs| takes precedence over |rhs|.
|
| - static bool FilterTakesPrecedence(const FilterComponents& lhs,
|
| - const FilterComponents& rhs);
|
| -
|
| - SegmentURLCallback segment_url_;
|
| - url_matcher::URLMatcherConditionSet::ID id_;
|
| - std::map<url_matcher::URLMatcherConditionSet::ID, FilterComponents> filters_;
|
| - scoped_ptr<url_matcher::URLMatcher> url_matcher_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(URLBlacklist);
|
| -};
|
| -
|
| -// Tracks the blacklist policies for a given profile, and updates it on changes.
|
| -//
|
| -// This class interacts with both the UI thread, where notifications of pref
|
| -// changes are received from, and the IO thread, which owns it (in the
|
| -// ProfileIOData) and checks for blacklisted URLs (from ChromeNetworkDelegate).
|
| -//
|
| -// It must be constructed on the UI thread, to set up |ui_weak_ptr_factory_| and
|
| -// the prefs listeners.
|
| -//
|
| -// ShutdownOnUIThread must be called from UI before destruction, to release
|
| -// the prefs listeners on the UI thread. This is done from ProfileIOData.
|
| -//
|
| -// Update tasks from the UI thread can post safely to the IO thread, since the
|
| -// destruction order of Profile and ProfileIOData guarantees that if this
|
| -// exists in UI, then a potential destruction on IO will come after any task
|
| -// posted to IO from that method on UI. This is used to go through IO before
|
| -// the actual update starts, and grab a WeakPtr.
|
| -class URLBlacklistManager {
|
| - public:
|
| - // Returns true if the blacklist should be skipped for |url|.
|
| - typedef bool (*SkipBlacklistCallback)(const GURL& url);
|
| -
|
| - // Must be constructed on the UI thread.
|
| - // |background_task_runner| is used to build the blacklist in a background
|
| - // thread.
|
| - // |io_task_runner| must be backed by the IO thread.
|
| - // |segment_url| is used to break a URL spec into its components.
|
| - URLBlacklistManager(
|
| - PrefService* pref_service,
|
| - const scoped_refptr<base::SequencedTaskRunner>& background_task_runner,
|
| - const scoped_refptr<base::SequencedTaskRunner>& io_task_runner,
|
| - URLBlacklist::SegmentURLCallback segment_url,
|
| - SkipBlacklistCallback skip_blacklist);
|
| - virtual ~URLBlacklistManager();
|
| -
|
| - // Must be called on the UI thread, before destruction.
|
| - void ShutdownOnUIThread();
|
| -
|
| - // Returns true if |url| is blocked by the current blacklist. Must be called
|
| - // from the IO thread.
|
| - bool IsURLBlocked(const GURL& url) const;
|
| -
|
| - // Returns true if |request| is blocked by the current blacklist.
|
| - // Only main frame and sub frame requests may be blocked; other sub resources
|
| - // or background downloads (e.g. extensions updates, sync, etc) are not
|
| - // filtered. The sync signin page is also not filtered.
|
| - // Must be called from the IO thread.
|
| - bool IsRequestBlocked(const net::URLRequest& request) const;
|
| -
|
| - // Replaces the current blacklist. Must be called on the IO thread.
|
| - // Virtual for testing.
|
| - virtual void SetBlacklist(scoped_ptr<URLBlacklist> blacklist);
|
| -
|
| - // Registers the preferences related to blacklisting in the given PrefService.
|
| - static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
|
| -
|
| - protected:
|
| - // Used to delay updating the blacklist while the preferences are
|
| - // changing, and execute only one update per simultaneous prefs changes.
|
| - void ScheduleUpdate();
|
| -
|
| - // Updates the blacklist using the current preference values.
|
| - // Virtual for testing.
|
| - virtual void Update();
|
| -
|
| - // Starts the blacklist update on the IO thread, using the filters in
|
| - // |block| and |allow|. Protected for testing.
|
| - void UpdateOnIO(scoped_ptr<base::ListValue> block,
|
| - scoped_ptr<base::ListValue> allow);
|
| -
|
| - private:
|
| - // ---------
|
| - // UI thread
|
| - // ---------
|
| -
|
| - // Used to post update tasks to the UI thread.
|
| - base::WeakPtrFactory<URLBlacklistManager> ui_weak_ptr_factory_;
|
| -
|
| - // Used to track the policies and update the blacklist on changes.
|
| - PrefChangeRegistrar pref_change_registrar_;
|
| - PrefService* pref_service_; // Weak.
|
| -
|
| - // Used to post tasks to a background thread.
|
| - scoped_refptr<base::SequencedTaskRunner> background_task_runner_;
|
| -
|
| - // Used to post tasks to the IO thread.
|
| - scoped_refptr<base::SequencedTaskRunner> io_task_runner_;
|
| -
|
| - // Used to break a URL into its components.
|
| - URLBlacklist::SegmentURLCallback segment_url_;
|
| -
|
| - // Used to optionally skip blacklisting for some URLs.
|
| - SkipBlacklistCallback skip_blacklist_;
|
| -
|
| - // ---------
|
| - // IO thread
|
| - // ---------
|
| -
|
| - // Used to get |weak_ptr_| to self on the IO thread.
|
| - base::WeakPtrFactory<URLBlacklistManager> io_weak_ptr_factory_;
|
| -
|
| - // Used to post tasks to the UI thread.
|
| - scoped_refptr<base::SequencedTaskRunner> ui_task_runner_;
|
| -
|
| - // The current blacklist.
|
| - scoped_ptr<URLBlacklist> blacklist_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(URLBlacklistManager);
|
| -};
|
| -
|
| -} // namespace policy
|
| -
|
| -#endif // CHROME_BROWSER_POLICY_URL_BLACKLIST_MANAGER_H_
|
|
|