Index: chrome/browser/garbled_text_url_tracker.cc |
diff --git a/chrome/browser/garbled_text_url_tracker.cc b/chrome/browser/garbled_text_url_tracker.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..48c467dbf9935a576b9f26a6c855d47fb4682e30 |
--- /dev/null |
+++ b/chrome/browser/garbled_text_url_tracker.cc |
@@ -0,0 +1,40 @@ |
+// 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. |
+ |
+#include "chrome/browser/garbled_text_url_tracker.h" |
+ |
+#include "googleurl/src/gurl.h" |
+ |
+GarbledTextURLTracker::GarbledTextURLTracker(const BooleanPrefMember& enabled, |
+ const Blacklist& blacklist) |
+ : enabled_(enabled), blacklist_(blacklist) { |
+} |
+ |
+GarbledTextURLTracker::~GarbledTextURLTracker() { |
+} |
+ |
+bool GarbledTextURLTracker::NeedsEncodingDetection(const GURL& url) const { |
+ DCHECK(CalledOnValidThread()); |
+ return enabled_.GetValue() && |
+ blacklist_.find(Normalize(url)) != blacklist_.end(); |
+} |
+ |
+void GarbledTextURLTracker::UpdateBlacklist(const GarbledURLs& garbled_urls, |
+ Blacklist* blacklist_delta) { |
+ DCHECK(CalledOnValidThread()); |
+ if (!enabled_.GetValue()) |
+ return; |
+ |
+ for (GarbledURLs::const_iterator itr = garbled_urls.begin(); |
+ itr != garbled_urls.end(); |
+ ++itr) { |
+ std::string entry = Normalize(*itr); |
+ if (blacklist_.insert(entry).second && blacklist_delta) |
+ blacklist_delta->insert(entry); |
+ } |
+} |
+ |
+std::string GarbledTextURLTracker::Normalize(const GURL& url) const { |
+ return url.host(); |
+} |