OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/plugins/flash_download_interception.h" | 5 #include "chrome/browser/plugins/flash_download_interception.h" |
6 | 6 |
7 #include "base/test/scoped_feature_list.h" | 7 #include "base/test/scoped_feature_list.h" |
| 8 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
8 #include "chrome/common/chrome_features.h" | 9 #include "chrome/common/chrome_features.h" |
9 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 10 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
| 11 #include "chrome/test/base/testing_profile.h" |
| 12 #include "components/content_settings/core/browser/host_content_settings_map.h" |
10 #include "content/public/browser/navigation_handle.h" | 13 #include "content/public/browser/navigation_handle.h" |
11 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
12 #include "url/gurl.h" | 15 #include "url/gurl.h" |
13 | 16 |
14 using content::NavigationHandle; | 17 using content::NavigationHandle; |
15 using content::NavigationThrottle; | 18 using content::NavigationThrottle; |
16 | 19 |
17 class FlashDownloadInterceptionTest : public ChromeRenderViewHostTestHarness { | 20 class FlashDownloadInterceptionTest : public ChromeRenderViewHostTestHarness { |
18 public: | 21 public: |
19 FlashDownloadInterceptionTest() {} | 22 FlashDownloadInterceptionTest() {} |
(...skipping 19 matching lines...) Expand all Loading... |
39 feature_list.InitAndDisableFeature(features::kPreferHtmlOverPlugins); | 42 feature_list.InitAndDisableFeature(features::kPreferHtmlOverPlugins); |
40 | 43 |
41 flash_navigation_handle_->CallWillStartRequestForTesting( | 44 flash_navigation_handle_->CallWillStartRequestForTesting( |
42 true, content::Referrer(), true, ui::PAGE_TRANSITION_LINK, false); | 45 true, content::Referrer(), true, ui::PAGE_TRANSITION_LINK, false); |
43 std::unique_ptr<NavigationThrottle> throttle = | 46 std::unique_ptr<NavigationThrottle> throttle = |
44 FlashDownloadInterception::MaybeCreateThrottleFor( | 47 FlashDownloadInterception::MaybeCreateThrottleFor( |
45 flash_navigation_handle_.get()); | 48 flash_navigation_handle_.get()); |
46 EXPECT_EQ(nullptr, throttle); | 49 EXPECT_EQ(nullptr, throttle); |
47 } | 50 } |
48 | 51 |
49 TEST_F(FlashDownloadInterceptionTest, PreferHtmlOverPluginsOn) { | 52 TEST_F(FlashDownloadInterceptionTest, DownloadUrlVariations) { |
50 std::unique_ptr<NavigationThrottle> throttle; | 53 std::unique_ptr<NavigationThrottle> throttle; |
51 std::unique_ptr<NavigationHandle> flash_slash_navigation_handle = | 54 std::unique_ptr<NavigationHandle> flash_slash_navigation_handle = |
52 NavigationHandle::CreateNavigationHandleForTesting( | 55 NavigationHandle::CreateNavigationHandleForTesting( |
53 GURL("https://get.adobe.com/flashplayer/"), main_rfh()); | 56 GURL("https://get.adobe.com/flashplayer/"), main_rfh()); |
54 std::unique_ptr<NavigationHandle> example_navigation_handle = | 57 std::unique_ptr<NavigationHandle> example_navigation_handle = |
55 NavigationHandle::CreateNavigationHandleForTesting( | 58 NavigationHandle::CreateNavigationHandleForTesting( |
56 GURL("https://www.example.com"), main_rfh()); | 59 GURL("https://www.example.com"), main_rfh()); |
57 std::unique_ptr<NavigationHandle> flash_http_navigation_handle = | 60 std::unique_ptr<NavigationHandle> flash_http_navigation_handle = |
58 NavigationHandle::CreateNavigationHandleForTesting( | 61 NavigationHandle::CreateNavigationHandleForTesting( |
59 GURL("http://get.adobe.com/flashplayer"), main_rfh()); | 62 GURL("http://get.adobe.com/flashplayer"), main_rfh()); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 EXPECT_NE(nullptr, throttle); | 102 EXPECT_NE(nullptr, throttle); |
100 ASSERT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, | 103 ASSERT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, |
101 throttle->WillStartRequest()); | 104 throttle->WillStartRequest()); |
102 | 105 |
103 example_flash_navigation_handle->CallWillStartRequestForTesting( | 106 example_flash_navigation_handle->CallWillStartRequestForTesting( |
104 true, content::Referrer(), true, ui::PAGE_TRANSITION_LINK, false); | 107 true, content::Referrer(), true, ui::PAGE_TRANSITION_LINK, false); |
105 throttle = FlashDownloadInterception::MaybeCreateThrottleFor( | 108 throttle = FlashDownloadInterception::MaybeCreateThrottleFor( |
106 example_flash_navigation_handle.get()); | 109 example_flash_navigation_handle.get()); |
107 EXPECT_EQ(nullptr, throttle); | 110 EXPECT_EQ(nullptr, throttle); |
108 } | 111 } |
| 112 |
| 113 TEST_F(FlashDownloadInterceptionTest, OnlyInterceptOnDetectContentSetting) { |
| 114 base::test::ScopedFeatureList feature_list; |
| 115 feature_list.InitAndEnableFeature(features::kPreferHtmlOverPlugins); |
| 116 |
| 117 flash_navigation_handle_->CallWillStartRequestForTesting( |
| 118 true, content::Referrer(), true, ui::PAGE_TRANSITION_LINK, false); |
| 119 |
| 120 // Default Setting (which is DETECT) |
| 121 std::unique_ptr<NavigationThrottle> throttle = |
| 122 FlashDownloadInterception::MaybeCreateThrottleFor( |
| 123 flash_navigation_handle_.get()); |
| 124 EXPECT_NE(nullptr, throttle); |
| 125 ASSERT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, |
| 126 throttle->WillStartRequest()); |
| 127 |
| 128 // ALLOW and BLOCK Settings |
| 129 HostContentSettingsMap* map = |
| 130 HostContentSettingsMapFactory::GetForProfile(profile()); |
| 131 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS, |
| 132 CONTENT_SETTING_ALLOW); |
| 133 EXPECT_EQ(nullptr, FlashDownloadInterception::MaybeCreateThrottleFor( |
| 134 flash_navigation_handle_.get())); |
| 135 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS, |
| 136 CONTENT_SETTING_BLOCK); |
| 137 EXPECT_EQ(nullptr, FlashDownloadInterception::MaybeCreateThrottleFor( |
| 138 flash_navigation_handle_.get())); |
| 139 |
| 140 // Explicit DETECT |
| 141 map->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS, |
| 142 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT); |
| 143 throttle = FlashDownloadInterception::MaybeCreateThrottleFor( |
| 144 flash_navigation_handle_.get()); |
| 145 EXPECT_NE(nullptr, throttle); |
| 146 ASSERT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, |
| 147 throttle->WillStartRequest()); |
| 148 } |
OLD | NEW |