OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <deque> | 5 #include <deque> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
11 #include "base/macros.h" | 11 #include "base/macros.h" |
12 #include "base/memory/ref_counted_memory.h" | 12 #include "base/memory/ref_counted_memory.h" |
13 #include "base/memory/scoped_vector.h" | 13 #include "base/memory/scoped_vector.h" |
14 #include "base/memory/weak_ptr.h" | 14 #include "base/memory/weak_ptr.h" |
15 #include "base/path_service.h" | 15 #include "base/path_service.h" |
16 #include "base/prefs/pref_service.h" | 16 #include "base/prefs/pref_service.h" |
17 #include "base/run_loop.h" | 17 #include "base/run_loop.h" |
18 #include "base/scoped_observer.h" | 18 #include "base/scoped_observer.h" |
| 19 #include "base/stl_util.h" |
19 #include "base/strings/string_util.h" | 20 #include "base/strings/string_util.h" |
20 #include "base/strings/stringprintf.h" | 21 #include "base/strings/stringprintf.h" |
21 #include "base/strings/utf_string_conversions.h" | 22 #include "base/strings/utf_string_conversions.h" |
22 #include "base/test/histogram_tester.h" | 23 #include "base/test/histogram_tester.h" |
23 #include "base/test/test_timeouts.h" | 24 #include "base/test/test_timeouts.h" |
24 #include "base/values.h" | 25 #include "base/values.h" |
25 #include "chrome/browser/browsing_data/browsing_data_helper.h" | 26 #include "chrome/browser/browsing_data/browsing_data_helper.h" |
26 #include "chrome/browser/browsing_data/browsing_data_remover.h" | 27 #include "chrome/browser/browsing_data/browsing_data_remover.h" |
27 #include "chrome/browser/browsing_data/browsing_data_remover_test_util.h" | 28 #include "chrome/browser/browsing_data/browsing_data_remover_test_util.h" |
28 #include "chrome/browser/chrome_content_browser_client.h" | 29 #include "chrome/browser/chrome_content_browser_client.h" |
(...skipping 12 matching lines...) Expand all Loading... |
41 #include "chrome/browser/prerender/prerender_manager.h" | 42 #include "chrome/browser/prerender/prerender_manager.h" |
42 #include "chrome/browser/prerender/prerender_manager_factory.h" | 43 #include "chrome/browser/prerender/prerender_manager_factory.h" |
43 #include "chrome/browser/profiles/profile.h" | 44 #include "chrome/browser/profiles/profile.h" |
44 #include "chrome/browser/profiles/profile_io_data.h" | 45 #include "chrome/browser/profiles/profile_io_data.h" |
45 #include "chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.
h" | 46 #include "chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.
h" |
46 #include "chrome/browser/safe_browsing/database_manager.h" | 47 #include "chrome/browser/safe_browsing/database_manager.h" |
47 #include "chrome/browser/safe_browsing/local_database_manager.h" | 48 #include "chrome/browser/safe_browsing/local_database_manager.h" |
48 #include "chrome/browser/safe_browsing/safe_browsing_service.h" | 49 #include "chrome/browser/safe_browsing/safe_browsing_service.h" |
49 #include "chrome/browser/safe_browsing/safe_browsing_util.h" | 50 #include "chrome/browser/safe_browsing/safe_browsing_util.h" |
50 #include "chrome/browser/safe_browsing/test_database_manager.h" | 51 #include "chrome/browser/safe_browsing/test_database_manager.h" |
| 52 #include "chrome/browser/task_management/providers/task_provider_observer.h" |
| 53 #include "chrome/browser/task_management/providers/web_contents/web_contents_tag
s_manager.h" |
| 54 #include "chrome/browser/task_management/providers/web_contents/web_contents_tas
k_provider.h" |
51 #include "chrome/browser/task_manager/task_manager.h" | 55 #include "chrome/browser/task_manager/task_manager.h" |
52 #include "chrome/browser/task_manager/task_manager_browsertest_util.h" | 56 #include "chrome/browser/task_manager/task_manager_browsertest_util.h" |
53 #include "chrome/browser/ui/browser.h" | 57 #include "chrome/browser/ui/browser.h" |
54 #include "chrome/browser/ui/browser_commands.h" | 58 #include "chrome/browser/ui/browser_commands.h" |
55 #include "chrome/browser/ui/browser_finder.h" | 59 #include "chrome/browser/ui/browser_finder.h" |
56 #include "chrome/browser/ui/browser_navigator.h" | 60 #include "chrome/browser/ui/browser_navigator.h" |
57 #include "chrome/browser/ui/browser_window.h" | 61 #include "chrome/browser/ui/browser_window.h" |
58 #include "chrome/browser/ui/location_bar/location_bar.h" | 62 #include "chrome/browser/ui/location_bar/location_bar.h" |
59 #include "chrome/browser/ui/omnibox/omnibox_edit_model.h" | 63 #include "chrome/browser/ui/omnibox/omnibox_edit_model.h" |
60 #include "chrome/browser/ui/omnibox/omnibox_popup_model.h" | 64 #include "chrome/browser/ui/omnibox/omnibox_popup_model.h" |
(...skipping 4012 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4073 WebContents* web_contents = | 4077 WebContents* web_contents = |
4074 browser()->tab_strip_model()->GetActiveWebContents(); | 4078 browser()->tab_strip_model()->GetActiveWebContents(); |
4075 bool display_test_result = false; | 4079 bool display_test_result = false; |
4076 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents, | 4080 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents, |
4077 "DidDisplayReallyPass()", | 4081 "DidDisplayReallyPass()", |
4078 &display_test_result)); | 4082 &display_test_result)); |
4079 ASSERT_TRUE(display_test_result); | 4083 ASSERT_TRUE(display_test_result); |
4080 } | 4084 } |
4081 #endif // !defined(DISABLE_NACL) | 4085 #endif // !defined(DISABLE_NACL) |
4082 | 4086 |
| 4087 #if defined(ENABLE_TASK_MANAGER) |
| 4088 |
| 4089 namespace { |
| 4090 |
| 4091 // Defines a test class for testing that will act as a mock task manager. |
| 4092 class MockTaskManager : public task_management::TaskProviderObserver { |
| 4093 public: |
| 4094 MockTaskManager() {} |
| 4095 ~MockTaskManager() override {} |
| 4096 |
| 4097 // task_management::Task_providerObserver: |
| 4098 void TaskAdded(task_management::Task* task) override { |
| 4099 EXPECT_FALSE(ContainsKey(provided_tasks_, task)); |
| 4100 provided_tasks_.insert(task); |
| 4101 } |
| 4102 |
| 4103 void TaskRemoved(task_management::Task* task) override { |
| 4104 EXPECT_TRUE(ContainsKey(provided_tasks_, task)); |
| 4105 provided_tasks_.erase(task); |
| 4106 } |
| 4107 |
| 4108 base::string16 GetPrerenderTitlePrefix() const { |
| 4109 return l10n_util::GetStringFUTF16(IDS_TASK_MANAGER_PRERENDER_PREFIX, |
| 4110 base::string16()); |
| 4111 } |
| 4112 |
| 4113 const std::set<task_management::WebContentsTag*>& tracked_tags() const { |
| 4114 return task_management::WebContentsTagsManager::GetInstance()-> |
| 4115 tracked_tags(); |
| 4116 } |
| 4117 |
| 4118 const std::set<task_management::Task*>& provided_tasks() const { |
| 4119 return provided_tasks_; |
| 4120 } |
| 4121 |
| 4122 private: |
| 4123 std::set<task_management::Task*> provided_tasks_; |
| 4124 |
| 4125 DISALLOW_COPY_AND_ASSIGN(MockTaskManager); |
| 4126 }; |
| 4127 |
| 4128 // Tests the correct recording of tags for the prerender WebContents. |
| 4129 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, TaskManagementTagsBasic) { |
| 4130 MockTaskManager task_manager; |
| 4131 EXPECT_TRUE(task_manager.tracked_tags().empty()); |
| 4132 |
| 4133 // Start prerendering a page and make sure it's correctly tagged. |
| 4134 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
| 4135 EXPECT_FALSE(task_manager.tracked_tags().empty()); |
| 4136 |
| 4137 // TODO(afakhry): Once we start tagging the tab contents the below tests |
| 4138 // must be changed. |
| 4139 EXPECT_EQ(1U, task_manager.tracked_tags().size()); |
| 4140 |
| 4141 // Swap in the prerendered content and make sure its tag is removed. |
| 4142 NavigateToDestURL(); |
| 4143 EXPECT_TRUE(task_manager.tracked_tags().empty()); |
| 4144 } |
| 4145 |
| 4146 // Tests that the task manager will be provided by tasks that correspond to |
| 4147 // prerendered WebContents. |
| 4148 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, TaskManagementTasksProvided) { |
| 4149 MockTaskManager task_manager; |
| 4150 EXPECT_TRUE(task_manager.tracked_tags().empty()); |
| 4151 |
| 4152 task_management::WebContentsTaskProvider provider; |
| 4153 provider.SetObserver(&task_manager); |
| 4154 |
| 4155 // Still empty, no pre-existing tasks. |
| 4156 EXPECT_TRUE(task_manager.provided_tasks().empty()); |
| 4157 |
| 4158 // Start prerendering a page. |
| 4159 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
| 4160 EXPECT_FALSE(task_manager.tracked_tags().empty()); |
| 4161 |
| 4162 // TODO(afakhry): The below may not be true after we support more tags. |
| 4163 EXPECT_EQ(1U, task_manager.tracked_tags().size()); |
| 4164 ASSERT_EQ(1U, task_manager.provided_tasks().size()); |
| 4165 |
| 4166 const task_management::Task* task = *task_manager.provided_tasks().begin(); |
| 4167 EXPECT_EQ(task_management::Task::RENDERER, task->GetType()); |
| 4168 const base::string16 title = task->title(); |
| 4169 const base::string16 expected_prefix = task_manager.GetPrerenderTitlePrefix(); |
| 4170 EXPECT_TRUE(base::StartsWith(title, |
| 4171 expected_prefix, |
| 4172 base::CompareCase::INSENSITIVE_ASCII)); |
| 4173 |
| 4174 NavigateToDestURL(); |
| 4175 // TODO(afakhry): The below may not be true after we support more tags. |
| 4176 EXPECT_TRUE(task_manager.provided_tasks().empty()); |
| 4177 } |
| 4178 |
| 4179 } // namespace |
| 4180 |
| 4181 #endif // defined(ENABLE_TASK_MANAGER) |
| 4182 |
4083 } // namespace prerender | 4183 } // namespace prerender |
OLD | NEW |