Add ManagedModeURLFilter.

ManagedModeURLFilter will eventually allow special treatment (e.g. blocking, notifying) for URLs that aren't on a defined whitelist.

BUG=134417


Review URL: https://chromiumcodereview.appspot.com/10824257

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@151993 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc
index c9f69cc..0ddb5da 100644
--- a/chrome/browser/net/chrome_network_delegate.cc
+++ b/chrome/browser/net/chrome_network_delegate.cc
@@ -33,6 +33,10 @@
 #include "net/socket_stream/socket_stream.h"
 #include "net/url_request/url_request.h"
 
+#if !defined(OS_ANDROID)
+#include "chrome/browser/managed_mode_url_filter.h"
+#endif
+
 #if defined(OS_CHROMEOS)
 #include "base/chromeos/chromeos_version.h"
 #endif
@@ -129,6 +133,7 @@
     extensions::EventRouterForwarder* event_router,
     ExtensionInfoMap* extension_info_map,
     const policy::URLBlacklistManager* url_blacklist_manager,
+    const ManagedModeURLFilter* managed_mode_url_filter,
     void* profile,
     CookieSettings* cookie_settings,
     BooleanPrefMember* enable_referrers,
@@ -139,6 +144,7 @@
       extension_info_map_(extension_info_map),
       enable_referrers_(enable_referrers),
       url_blacklist_manager_(url_blacklist_manager),
+      managed_mode_url_filter_(managed_mode_url_filter),
       cache_stats_(cache_stats) {
   DCHECK(event_router);
   DCHECK(enable_referrers);
@@ -185,6 +191,14 @@
   }
 #endif
 
+#if !defined(OS_ANDROID)
+  if (managed_mode_url_filter_ &&
+      !managed_mode_url_filter_->IsURLWhitelisted(request->url())) {
+    // Block for now.
+    return net::ERR_NETWORK_ACCESS_DENIED;
+  }
+#endif
+
   ForwardRequestStatus(REQUEST_STARTED, request, profile_);
 
   if (!enable_referrers_->GetValue())