Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(425)

Side by Side Diff: chrome/browser/task_manager/task_manager_browsertest.cc

Issue 17501006: Remove "View Background Pages". (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: gtk Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "chrome/browser/task_manager/task_manager.h" 5 #include "chrome/browser/task_manager/task_manager.h"
6 6
7 #include "base/files/file_path.h" 7 #include "base/files/file_path.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/browser/background/background_contents_service.h"
11 #include "chrome/browser/background/background_contents_service_factory.h"
12 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
13 #include "chrome/browser/extensions/extension_browsertest.h" 11 #include "chrome/browser/extensions/extension_browsertest.h"
14 #include "chrome/browser/extensions/extension_service.h" 12 #include "chrome/browser/extensions/extension_service.h"
15 #include "chrome/browser/extensions/extension_system.h" 13 #include "chrome/browser/extensions/extension_system.h"
16 #include "chrome/browser/infobars/confirm_infobar_delegate.h" 14 #include "chrome/browser/infobars/confirm_infobar_delegate.h"
17 #include "chrome/browser/infobars/infobar_service.h" 15 #include "chrome/browser/infobars/infobar_service.h"
18 #include "chrome/browser/notifications/desktop_notification_service.h" 16 #include "chrome/browser/notifications/desktop_notification_service.h"
19 #include "chrome/browser/notifications/notification.h" 17 #include "chrome/browser/notifications/notification.h"
20 #include "chrome/browser/notifications/notification_test_util.h" 18 #include "chrome/browser/notifications/notification_test_util.h"
21 #include "chrome/browser/notifications/notification_ui_manager.h" 19 #include "chrome/browser/notifications/notification_ui_manager.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 69
72 TaskManagerModel* model() const { 70 TaskManagerModel* model() const {
73 return TaskManager::GetInstance()->model(); 71 return TaskManager::GetInstance()->model();
74 } 72 }
75 73
76 virtual void SetUpOnMainThread() OVERRIDE { 74 virtual void SetUpOnMainThread() OVERRIDE {
77 ExtensionBrowserTest::SetUpOnMainThread(); 75 ExtensionBrowserTest::SetUpOnMainThread();
78 76
79 EXPECT_EQ(0, model()->ResourceCount()); 77 EXPECT_EQ(0, model()->ResourceCount());
80 78
81 EXPECT_EQ(0, TaskManager::GetBackgroundPageCount());
82
83 // Show the task manager. This populates the model, and helps with debugging 79 // Show the task manager. This populates the model, and helps with debugging
84 // (you see the task manager). 80 // (you see the task manager).
85 chrome::ShowTaskManager(browser(), false); 81 chrome::ShowTaskManager(browser());
86 82
87 // New Tab Page. 83 // New Tab Page.
88 TaskManagerBrowserTestUtil::WaitForWebResourceChange(1); 84 TaskManagerBrowserTestUtil::WaitForWebResourceChange(1);
89 } 85 }
90 86
91 void Refresh() { 87 void Refresh() {
92 model()->Refresh(); 88 model()->Refresh();
93 } 89 }
94 90
95 int GetUpdateTimeMs() { 91 int GetUpdateTimeMs() {
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 178
183 // Close the panel and verify that we notice. 179 // Close the panel and verify that we notice.
184 panel->Close(); 180 panel->Close();
185 TaskManagerBrowserTestUtil::WaitForWebResourceChange(2); 181 TaskManagerBrowserTestUtil::WaitForWebResourceChange(2);
186 182
187 // Unload extension to avoid crash on Windows. 183 // Unload extension to avoid crash on Windows.
188 UnloadExtension(last_loaded_extension_id_); 184 UnloadExtension(last_loaded_extension_id_);
189 TaskManagerBrowserTestUtil::WaitForWebResourceChange(1); 185 TaskManagerBrowserTestUtil::WaitForWebResourceChange(1);
190 } 186 }
191 187
192 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeBGContentsChanges) {
193 // Open a new background contents and make sure we notice that.
194 GURL url(ui_test_utils::GetTestUrl(base::FilePath(
195 base::FilePath::kCurrentDirectory), base::FilePath(kTitle1File)));
196
197 BackgroundContentsService* service =
198 BackgroundContentsServiceFactory::GetForProfile(browser()->profile());
199 string16 application_id(ASCIIToUTF16("test_app_id"));
200 service->LoadBackgroundContents(browser()->profile(),
201 url,
202 ASCIIToUTF16("background_page"),
203 application_id);
204 TaskManagerBrowserTestUtil::WaitForWebResourceChange(2);
205 EXPECT_EQ(1, TaskManager::GetBackgroundPageCount());
206
207 // Close the background contents and verify that we notice.
208 service->ShutdownAssociatedBackgroundContents(application_id);
209 TaskManagerBrowserTestUtil::WaitForWebResourceChange(1);
210 EXPECT_EQ(0, TaskManager::GetBackgroundPageCount());
211 }
212
213 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, KillBGContents) {
214 int resource_count = TaskManager::GetInstance()->model()->ResourceCount();
215
216 // Open a new background contents and make sure we notice that.
217 GURL url(ui_test_utils::GetTestUrl(base::FilePath(
218 base::FilePath::kCurrentDirectory), base::FilePath(kTitle1File)));
219
220 content::WindowedNotificationObserver observer(
221 chrome::NOTIFICATION_BACKGROUND_CONTENTS_NAVIGATED,
222 content::Source<Profile>(browser()->profile()));
223
224 BackgroundContentsService* service =
225 BackgroundContentsServiceFactory::GetForProfile(browser()->profile());
226 string16 application_id(ASCIIToUTF16("test_app_id"));
227 service->LoadBackgroundContents(browser()->profile(),
228 url,
229 ASCIIToUTF16("background_page"),
230 application_id);
231
232 // Wait for the background contents process to finish loading.
233 observer.Wait();
234
235 EXPECT_EQ(resource_count + 1, model()->ResourceCount());
236 EXPECT_EQ(1, TaskManager::GetBackgroundPageCount());
237
238 // Kill the background contents process and verify that it disappears from the
239 // model.
240 bool found = false;
241 for (int i = 0; i < model()->ResourceCount(); ++i) {
242 if (model()->IsBackgroundResource(i)) {
243 TaskManager::GetInstance()->KillProcess(i);
244 found = true;
245 break;
246 }
247 }
248 ASSERT_TRUE(found);
249 TaskManagerBrowserTestUtil::WaitForWebResourceChange(1);
250 EXPECT_EQ(0, TaskManager::GetBackgroundPageCount());
251 }
252
253 #if defined(USE_ASH) || defined(OS_WIN) 188 #if defined(USE_ASH) || defined(OS_WIN)
254 // This test fails on Ash because task manager treats view type 189 // This test fails on Ash because task manager treats view type
255 // Panels differently for Ash. 190 // Panels differently for Ash.
256 // This test also fails on Windows, win_rel trybot. http://crbug.com/166322 191 // This test also fails on Windows, win_rel trybot. http://crbug.com/166322
257 #define MAYBE_KillPanelExtension DISABLED_KillPanelExtension 192 #define MAYBE_KillPanelExtension DISABLED_KillPanelExtension
258 #else 193 #else
259 #define MAYBE_KillPanelExtension KillPanelExtension 194 #define MAYBE_KillPanelExtension KillPanelExtension
260 #endif 195 #endif
261 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, MAYBE_KillPanelExtension) { 196 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, MAYBE_KillPanelExtension) {
262 int resource_count = TaskManager::GetInstance()->model()->ResourceCount(); 197 int resource_count = TaskManager::GetInstance()->model()->ResourceCount();
(...skipping 18 matching lines...) Expand all
281 PanelManager::CREATE_AS_DOCKED); 216 PanelManager::CREATE_AS_DOCKED);
282 TaskManagerBrowserTestUtil::WaitForWebResourceChange(3); 217 TaskManagerBrowserTestUtil::WaitForWebResourceChange(3);
283 218
284 // Kill the panel extension process and verify that it disappears from the 219 // Kill the panel extension process and verify that it disappears from the
285 // model along with its panel. 220 // model along with its panel.
286 ASSERT_TRUE(model()->IsBackgroundResource(resource_count)); 221 ASSERT_TRUE(model()->IsBackgroundResource(resource_count));
287 TaskManager::GetInstance()->KillProcess(resource_count); 222 TaskManager::GetInstance()->KillProcess(resource_count);
288 TaskManagerBrowserTestUtil::WaitForWebResourceChange(1); 223 TaskManagerBrowserTestUtil::WaitForWebResourceChange(1);
289 } 224 }
290 225
291 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeExtensionChanges) {
292 // Loading an extension with a background page should result in a new
293 // resource being created for it.
294 ASSERT_TRUE(LoadExtension(
295 test_data_dir_.AppendASCII("common").AppendASCII("background_page")));
296 TaskManagerBrowserTestUtil::WaitForWebResourceChange(2);
297 EXPECT_EQ(1, TaskManager::GetBackgroundPageCount());
298
299 // Unload extension to avoid crash on Windows (see http://crbug.com/31663).
300 UnloadExtension(last_loaded_extension_id_);
301 TaskManagerBrowserTestUtil::WaitForWebResourceChange(1);
302 EXPECT_EQ(0, TaskManager::GetBackgroundPageCount());
303 }
304
305 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeExtensionTabs) { 226 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeExtensionTabs) {
306 int resource_count = TaskManager::GetInstance()->model()->ResourceCount(); 227 int resource_count = TaskManager::GetInstance()->model()->ResourceCount();
307 ASSERT_TRUE(LoadExtension( 228 ASSERT_TRUE(LoadExtension(
308 test_data_dir_.AppendASCII("good").AppendASCII("Extensions") 229 test_data_dir_.AppendASCII("good").AppendASCII("Extensions")
309 .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj") 230 .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj")
310 .AppendASCII("1.0.0.0"))); 231 .AppendASCII("1.0.0.0")));
311 232
312 // Browser, Extension background page, and the New Tab Page. 233 // Browser, Extension background page, and the New Tab Page.
313 TaskManagerBrowserTestUtil::WaitForWebResourceChange(2); 234 TaskManagerBrowserTestUtil::WaitForWebResourceChange(2);
314 235
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 ui_test_utils::NavigateToURL(browser(), url); 350 ui_test_utils::NavigateToURL(browser(), url);
430 351
431 // Force the TaskManager to query the title. 352 // Force the TaskManager to query the title.
432 Refresh(); 353 Refresh();
433 354
434 // The third entry's title should be back to a normal tab. 355 // The third entry's title should be back to a normal tab.
435 ASSERT_TRUE(StartsWith(model()->GetResourceTitle(resource_count), 356 ASSERT_TRUE(StartsWith(model()->GetResourceTitle(resource_count),
436 tab_prefix, true)); 357 tab_prefix, true));
437 } 358 }
438 359
439 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, MAYBE_KillExtension) {
440 int resource_count = TaskManager::GetInstance()->model()->ResourceCount();
441
442 ASSERT_TRUE(LoadExtension(
443 test_data_dir_.AppendASCII("common").AppendASCII("background_page")));
444
445 // Wait until we see the loaded extension in the task manager (the three
446 // resources are: the browser process, New Tab Page, and the extension).
447 TaskManagerBrowserTestUtil::WaitForWebResourceChange(2);
448 EXPECT_EQ(1, TaskManager::GetBackgroundPageCount());
449
450 EXPECT_TRUE(model()->GetResourceExtension(0) == NULL);
451 EXPECT_TRUE(model()->GetResourceExtension(1) == NULL);
452 ASSERT_TRUE(model()->GetResourceExtension(resource_count) != NULL);
453
454 // Kill the extension process and make sure we notice it.
455 TaskManager::GetInstance()->KillProcess(resource_count);
456 TaskManagerBrowserTestUtil::WaitForWebResourceChange(1);
457 EXPECT_EQ(0, TaskManager::GetBackgroundPageCount());
458 }
459
460 // Disabled, http://crbug.com/66957. 360 // Disabled, http://crbug.com/66957.
461 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, 361 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest,
462 DISABLED_KillExtensionAndReload) { 362 DISABLED_KillExtensionAndReload) {
463 ASSERT_TRUE(LoadExtension( 363 ASSERT_TRUE(LoadExtension(
464 test_data_dir_.AppendASCII("common").AppendASCII("background_page"))); 364 test_data_dir_.AppendASCII("common").AppendASCII("background_page")));
465 365
466 // Wait until we see the loaded extension in the task manager (the three 366 // Wait until we see the loaded extension in the task manager (the three
467 // resources are: the browser process, New Tab Page, and the extension). 367 // resources are: the browser process, New Tab Page, and the extension).
468 TaskManagerBrowserTestUtil::WaitForWebResourceChange(3); 368 TaskManagerBrowserTestUtil::WaitForWebResourceChange(3);
469 369
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 ASSERT_TRUE(model()->GetV8Memory(resource_index, &result)); 488 ASSERT_TRUE(model()->GetV8Memory(resource_index, &result));
589 LOG(INFO) << "Got V8 Heap Size " << result << " bytes"; 489 LOG(INFO) << "Got V8 Heap Size " << result << " bytes";
590 EXPECT_GE(result, minimal_heap_size); 490 EXPECT_GE(result, minimal_heap_size);
591 491
592 ASSERT_TRUE(model()->GetV8MemoryUsed(resource_index, &result)); 492 ASSERT_TRUE(model()->GetV8MemoryUsed(resource_index, &result));
593 LOG(INFO) << "Got V8 Used Heap Size " << result << " bytes"; 493 LOG(INFO) << "Got V8 Used Heap Size " << result << " bytes";
594 EXPECT_GE(result, minimal_heap_size); 494 EXPECT_GE(result, minimal_heap_size);
595 } 495 }
596 496
597 #endif 497 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698