1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/supervised_user/supervised_user_resource_throttle.h" 6 7 #include "base/command_line.h" 8 #include "base/prefs/pref_service.h" 9 #include "base/values.h" 10 #include "chrome/browser/profiles/profile.h" 11 #include "chrome/browser/supervised_user/supervised_user_constants.h" 12 #include "chrome/browser/supervised_user/supervised_user_service.h" 13 #include "chrome/browser/supervised_user/supervised_user_service_factory.h" 14 #include "chrome/browser/supervised_user/supervised_user_settings_service.h" 15 #include "chrome/browser/supervised_user/supervised_user_settings_service_factory.h" 16 #include "chrome/browser/ui/browser.h" 17 #include "chrome/common/chrome_switches.h" 18 #include "chrome/test/base/in_process_browser_test.h" 19 #include "chrome/test/base/ui_test_utils.h" 20 #include "content/public/browser/navigation_entry.h" 21 #include "content/public/browser/web_contents.h" 22 #include "content/public/common/page_type.h" 23 #include "content/public/test/test_navigation_observer.h" 24 #include "content/public/test/test_utils.h" 25 26 using content::MessageLoopRunner; 27 using content::NavigationController; 28 using content::WebContents; 29 30 class SupervisedUserResourceThrottleTest : public InProcessBrowserTest { 31 protected: SupervisedUserResourceThrottleTest()32 SupervisedUserResourceThrottleTest() : supervised_user_service_(NULL) {} ~SupervisedUserResourceThrottleTest()33 virtual ~SupervisedUserResourceThrottleTest() {} 34 35 private: 36 virtual void SetUpOnMainThread() OVERRIDE; 37 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE; 38 39 SupervisedUserService* supervised_user_service_; 40 }; 41 SetUpOnMainThread()42void SupervisedUserResourceThrottleTest::SetUpOnMainThread() { 43 supervised_user_service_ = 44 SupervisedUserServiceFactory::GetForProfile(browser()->profile()); 45 } 46 SetUpCommandLine(CommandLine * command_line)47void SupervisedUserResourceThrottleTest::SetUpCommandLine( 48 CommandLine* command_line) { 49 command_line->AppendSwitchASCII(switches::kSupervisedUserId, "asdf"); 50 } 51 52 // Tests that showing the blocking interstitial for a WebContents without a 53 // SupervisedUserNavigationObserver doesn't crash. IN_PROC_BROWSER_TEST_F(SupervisedUserResourceThrottleTest,NoNavigationObserverBlock)54IN_PROC_BROWSER_TEST_F(SupervisedUserResourceThrottleTest, 55 NoNavigationObserverBlock) { 56 Profile* profile = browser()->profile(); 57 SupervisedUserSettingsService* supervised_user_settings_service = 58 SupervisedUserSettingsServiceFactory::GetForProfile(profile); 59 supervised_user_settings_service->SetLocalSettingForTesting( 60 supervised_users::kContentPackDefaultFilteringBehavior, 61 scoped_ptr<base::Value>( 62 new base::FundamentalValue(SupervisedUserURLFilter::BLOCK))); 63 64 scoped_ptr<WebContents> web_contents( 65 WebContents::Create(WebContents::CreateParams(profile))); 66 NavigationController& controller = web_contents->GetController(); 67 content::TestNavigationObserver observer(web_contents.get()); 68 controller.LoadURL(GURL("http://www.example.com"), content::Referrer(), 69 content::PAGE_TRANSITION_TYPED, std::string()); 70 observer.Wait(); 71 content::NavigationEntry* entry = controller.GetActiveEntry(); 72 ASSERT_TRUE(entry); 73 EXPECT_EQ(content::PAGE_TYPE_INTERSTITIAL, entry->GetPageType()); 74 } 75