Chromium Code Reviews| 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" |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 41 #include "chrome/browser/prerender/prerender_manager.h" | 41 #include "chrome/browser/prerender/prerender_manager.h" |
| 42 #include "chrome/browser/prerender/prerender_manager_factory.h" | 42 #include "chrome/browser/prerender/prerender_manager_factory.h" |
| 43 #include "chrome/browser/profiles/profile.h" | 43 #include "chrome/browser/profiles/profile.h" |
| 44 #include "chrome/browser/profiles/profile_io_data.h" | 44 #include "chrome/browser/profiles/profile_io_data.h" |
| 45 #include "chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate. h" | 45 #include "chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate. h" |
| 46 #include "chrome/browser/safe_browsing/database_manager.h" | 46 #include "chrome/browser/safe_browsing/database_manager.h" |
| 47 #include "chrome/browser/safe_browsing/local_database_manager.h" | 47 #include "chrome/browser/safe_browsing/local_database_manager.h" |
| 48 #include "chrome/browser/safe_browsing/safe_browsing_service.h" | 48 #include "chrome/browser/safe_browsing/safe_browsing_service.h" |
| 49 #include "chrome/browser/safe_browsing/safe_browsing_util.h" | 49 #include "chrome/browser/safe_browsing/safe_browsing_util.h" |
| 50 #include "chrome/browser/safe_browsing/test_database_manager.h" | 50 #include "chrome/browser/safe_browsing/test_database_manager.h" |
| 51 #include "chrome/browser/task_management/providers/task_provider_observer.h" | |
| 52 #include "chrome/browser/task_management/providers/web_contents/web_contents_tag s_manager.h" | |
| 53 #include "chrome/browser/task_management/providers/web_contents/web_contents_tas k_provider.h" | |
| 51 #include "chrome/browser/task_manager/task_manager.h" | 54 #include "chrome/browser/task_manager/task_manager.h" |
| 52 #include "chrome/browser/task_manager/task_manager_browsertest_util.h" | 55 #include "chrome/browser/task_manager/task_manager_browsertest_util.h" |
| 53 #include "chrome/browser/ui/browser.h" | 56 #include "chrome/browser/ui/browser.h" |
| 54 #include "chrome/browser/ui/browser_commands.h" | 57 #include "chrome/browser/ui/browser_commands.h" |
| 55 #include "chrome/browser/ui/browser_finder.h" | 58 #include "chrome/browser/ui/browser_finder.h" |
| 56 #include "chrome/browser/ui/browser_navigator.h" | 59 #include "chrome/browser/ui/browser_navigator.h" |
| 57 #include "chrome/browser/ui/browser_window.h" | 60 #include "chrome/browser/ui/browser_window.h" |
| 58 #include "chrome/browser/ui/location_bar/location_bar.h" | 61 #include "chrome/browser/ui/location_bar/location_bar.h" |
| 59 #include "chrome/browser/ui/omnibox/omnibox_edit_model.h" | 62 #include "chrome/browser/ui/omnibox/omnibox_edit_model.h" |
| 60 #include "chrome/browser/ui/omnibox/omnibox_popup_model.h" | 63 #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 = | 4076 WebContents* web_contents = |
| 4074 browser()->tab_strip_model()->GetActiveWebContents(); | 4077 browser()->tab_strip_model()->GetActiveWebContents(); |
| 4075 bool display_test_result = false; | 4078 bool display_test_result = false; |
| 4076 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents, | 4079 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents, |
| 4077 "DidDisplayReallyPass()", | 4080 "DidDisplayReallyPass()", |
| 4078 &display_test_result)); | 4081 &display_test_result)); |
| 4079 ASSERT_TRUE(display_test_result); | 4082 ASSERT_TRUE(display_test_result); |
| 4080 } | 4083 } |
| 4081 #endif // !defined(DISABLE_NACL) | 4084 #endif // !defined(DISABLE_NACL) |
| 4082 | 4085 |
| 4086 #if defined(ENABLE_TASK_MANAGER) | |
| 4087 | |
| 4088 // Defines a test class for testing that prerender WebContents are correctly | |
| 4089 // tagged by their task-manager specific tag. It also tests that a task-manager | |
| 4090 // PrerenderTask will be correctly recorded. | |
| 4091 class PrerenderTagTest | |
| 4092 : public PrerenderBrowserTest, | |
|
ncarter (slow)
2015/06/19 19:50:51
I would probably structure this class as a helper
afakhry
2015/06/19 21:49:21
Done.
| |
| 4093 public task_management::TaskProviderObserver { | |
| 4094 public: | |
| 4095 PrerenderTagTest() {} | |
| 4096 ~PrerenderTagTest() override {} | |
| 4097 | |
| 4098 // task_management::Task_providerObserver: | |
| 4099 void TaskAdded(task_management::Task* task) override { | |
| 4100 CHECK(task); | |
| 4101 ASSERT_FALSE(provided_tasks_.count(task)); | |
| 4102 provided_tasks_.insert(task); | |
|
ncarter (slow)
2015/06/19 19:50:50
FWIW (this is just an idea / food for thought) I'v
| |
| 4103 } | |
| 4104 | |
| 4105 void TaskRemoved(task_management::Task* task) override { | |
| 4106 CHECK(task); | |
| 4107 ASSERT_TRUE(provided_tasks_.count(task)); | |
| 4108 provided_tasks_.erase(task); | |
| 4109 } | |
| 4110 | |
| 4111 base::string16 GetPrerenderTitlePrefix() const { | |
| 4112 return l10n_util::GetStringFUTF16(IDS_TASK_MANAGER_PRERENDER_PREFIX, | |
| 4113 base::string16()); | |
| 4114 } | |
| 4115 | |
| 4116 task_management::WebContentsTagsManager* tags_manager() const { | |
| 4117 return task_management::WebContentsTagsManager::GetInstance(); | |
| 4118 } | |
| 4119 | |
| 4120 const std::set<task_management::Task*>& provided_tasks() const { | |
| 4121 return provided_tasks_; | |
| 4122 } | |
| 4123 | |
| 4124 private: | |
| 4125 std::set<task_management::Task*> provided_tasks_; | |
| 4126 | |
| 4127 DISALLOW_COPY_AND_ASSIGN(PrerenderTagTest); | |
| 4128 }; | |
| 4129 | |
| 4130 namespace { | |
| 4131 const char kPrerenderPage[] = "files/prerender/prerender_page.html"; | |
| 4132 } // namespace | |
| 4133 | |
| 4134 // Tests the correct recording of tags for the prerender WebContents. | |
| 4135 IN_PROC_BROWSER_TEST_F(PrerenderTagTest, Basic) { | |
| 4136 EXPECT_TRUE(tags_manager()->tracked_tags().empty()); | |
| 4137 | |
| 4138 // Start prerendering a page and make sure it's correctly tagged. | |
| 4139 PrerenderTestURL(kPrerenderPage, FINAL_STATUS_USED, 1); | |
| 4140 EXPECT_FALSE(tags_manager()->tracked_tags().empty()); | |
| 4141 EXPECT_EQ(1U, tags_manager()->tracked_tags().size()); | |
|
ncarter (slow)
2015/06/19 19:50:51
FYI, this assert may come back to bite you, once y
afakhry
2015/06/19 21:49:22
Yes, thanks. I'm aware of that and hence the below
| |
| 4142 | |
| 4143 // Swap in the prerendered content and make sure its tag is removed. | |
| 4144 // TODO(afakhry): Once we start tagging the tab contents the below test | |
| 4145 // must be changed. | |
| 4146 NavigateToDestURL(); | |
| 4147 EXPECT_TRUE(tags_manager()->tracked_tags().empty()); | |
| 4148 } | |
| 4149 | |
| 4150 IN_PROC_BROWSER_TEST_F(PrerenderTagTest, PrerenderTaskIsProvided) { | |
| 4151 EXPECT_TRUE(provided_tasks().empty()); | |
| 4152 EXPECT_TRUE(tags_manager()->tracked_tags().empty()); | |
| 4153 | |
| 4154 task_management::WebContentsTaskProvider provider; | |
| 4155 provider.SetObserver(this); | |
| 4156 | |
| 4157 // Still empty, no pre-existing tasks. | |
| 4158 EXPECT_TRUE(provided_tasks().empty()); | |
| 4159 | |
| 4160 // Start prerendering a page. | |
| 4161 PrerenderTestURL(kPrerenderPage, FINAL_STATUS_USED, 1); | |
| 4162 EXPECT_FALSE(tags_manager()->tracked_tags().empty()); | |
| 4163 EXPECT_EQ(1U, tags_manager()->tracked_tags().size()); | |
| 4164 ASSERT_FALSE(provided_tasks().empty()); | |
| 4165 | |
| 4166 // TODO(afakhry): The below may not be true after we support more tags. | |
| 4167 ASSERT_EQ(1U, provided_tasks().size()); | |
| 4168 | |
| 4169 const task_management::Task* task = *provided_tasks().begin(); | |
| 4170 EXPECT_EQ(task_management::Task::RENDERER, task->GetType()); | |
| 4171 const base::string16 title = task->title(); | |
| 4172 const base::string16 expected_prefix = GetPrerenderTitlePrefix(); | |
| 4173 EXPECT_TRUE(title.find(expected_prefix) != base::string16::npos); | |
| 4174 EXPECT_TRUE(title.find(expected_prefix) == 0); | |
|
ncarter (slow)
2015/06/19 19:50:51
[Option A] EXPECT_TRUE(base::StartsWith(title, exp
afakhry
2015/06/19 21:49:21
Done [Option A].
| |
| 4175 | |
| 4176 NavigateToDestURL(); | |
| 4177 // TODO(afakhry): The below may not be true after we support more tags. | |
| 4178 EXPECT_TRUE(provided_tasks().empty()); | |
| 4179 } | |
| 4180 | |
| 4181 #endif // defined(ENABLE_TASK_MANAGER) | |
| 4182 | |
| 4083 } // namespace prerender | 4183 } // namespace prerender |
| OLD | NEW |