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 <string> | 5 #include <string> |
6 | 6 |
7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
8 #include "base/process_util.h" | 8 #include "base/process_util.h" |
9 #include "chrome/browser/renderer_host/web_cache_manager.h" | 9 #include "chrome/browser/renderer_host/web_cache_manager.h" |
10 #include "chrome/browser/ui/browser.h" | 10 #include "chrome/browser/ui/browser.h" |
11 #include "chrome/browser/ui/browser_commands.h" | 11 #include "chrome/browser/ui/browser_commands.h" |
| 12 #include "chrome/browser/ui/browser_tabstrip.h" |
12 #include "chrome/test/base/in_process_browser_test.h" | 13 #include "chrome/test/base/in_process_browser_test.h" |
13 #include "chrome/test/base/ui_test_utils.h" | 14 #include "chrome/test/base/ui_test_utils.h" |
14 #include "content/public/browser/render_process_host.h" | 15 #include "content/public/browser/render_process_host.h" |
15 #include "content/public/browser/web_contents.h" | 16 #include "content/public/browser/web_contents.h" |
16 #include "content/public/common/result_codes.h" | 17 #include "content/public/common/result_codes.h" |
17 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
18 | 19 |
19 using content::WebContents; | 20 using content::WebContents; |
20 | 21 |
21 class WebCacheManagerBrowserTest : public InProcessBrowserTest { | 22 class WebCacheManagerBrowserTest : public InProcessBrowserTest { |
22 }; | 23 }; |
23 | 24 |
24 // Regression test for http://crbug.com/12362. If a renderer crashes and the | 25 // Regression test for http://crbug.com/12362. If a renderer crashes and the |
25 // user navigates to another tab and back, the browser doesn't crash. | 26 // user navigates to another tab and back, the browser doesn't crash. |
26 IN_PROC_BROWSER_TEST_F(WebCacheManagerBrowserTest, CrashOnceOnly) { | 27 IN_PROC_BROWSER_TEST_F(WebCacheManagerBrowserTest, CrashOnceOnly) { |
27 const FilePath kTestDir(FILE_PATH_LITERAL("google")); | 28 const FilePath kTestDir(FILE_PATH_LITERAL("google")); |
28 const FilePath kTestFile(FILE_PATH_LITERAL("google.html")); | 29 const FilePath kTestFile(FILE_PATH_LITERAL("google.html")); |
29 GURL url(ui_test_utils::GetTestUrl(kTestDir, kTestFile)); | 30 GURL url(ui_test_utils::GetTestUrl(kTestDir, kTestFile)); |
30 | 31 |
31 ui_test_utils::NavigateToURL(browser(), url); | 32 ui_test_utils::NavigateToURL(browser(), url); |
32 | 33 |
33 chrome::NewTab(browser()); | 34 chrome::NewTab(browser()); |
34 ui_test_utils::NavigateToURL(browser(), url); | 35 ui_test_utils::NavigateToURL(browser(), url); |
35 | 36 |
36 WebContents* tab = browser()->GetWebContentsAt(0); | 37 WebContents* tab = chrome::GetWebContentsAt(browser(), 0); |
37 ASSERT_TRUE(tab != NULL); | 38 ASSERT_TRUE(tab != NULL); |
38 base::KillProcess(tab->GetRenderProcessHost()->GetHandle(), | 39 base::KillProcess(tab->GetRenderProcessHost()->GetHandle(), |
39 content::RESULT_CODE_KILLED, true); | 40 content::RESULT_CODE_KILLED, true); |
40 | 41 |
41 browser()->ActivateTabAt(0, true); | 42 chrome::ActivateTabAt(browser(), 0, true); |
42 chrome::NewTab(browser()); | 43 chrome::NewTab(browser()); |
43 ui_test_utils::NavigateToURL(browser(), url); | 44 ui_test_utils::NavigateToURL(browser(), url); |
44 | 45 |
45 browser()->ActivateTabAt(0, true); | 46 chrome::ActivateTabAt(browser(), 0, true); |
46 chrome::NewTab(browser()); | 47 chrome::NewTab(browser()); |
47 ui_test_utils::NavigateToURL(browser(), url); | 48 ui_test_utils::NavigateToURL(browser(), url); |
48 | 49 |
49 // We would have crashed at the above line with the bug. | 50 // We would have crashed at the above line with the bug. |
50 | 51 |
51 browser()->ActivateTabAt(0, true); | 52 chrome::ActivateTabAt(browser(), 0, true); |
52 chrome::CloseTab(browser()); | 53 chrome::CloseTab(browser()); |
53 browser()->ActivateTabAt(0, true); | 54 chrome::ActivateTabAt(browser(), 0, true); |
54 chrome::CloseTab(browser()); | 55 chrome::CloseTab(browser()); |
55 browser()->ActivateTabAt(0, true); | 56 chrome::ActivateTabAt(browser(), 0, true); |
56 chrome::CloseTab(browser()); | 57 chrome::CloseTab(browser()); |
57 | 58 |
58 ui_test_utils::NavigateToURL(browser(), url); | 59 ui_test_utils::NavigateToURL(browser(), url); |
59 | 60 |
60 EXPECT_EQ( | 61 EXPECT_EQ( |
61 WebCacheManager::GetInstance()->active_renderers_.size(), 1U); | 62 WebCacheManager::GetInstance()->active_renderers_.size(), 1U); |
62 EXPECT_EQ( | 63 EXPECT_EQ( |
63 WebCacheManager::GetInstance()->inactive_renderers_.size(), 0U); | 64 WebCacheManager::GetInstance()->inactive_renderers_.size(), 0U); |
64 EXPECT_EQ( | 65 EXPECT_EQ( |
65 WebCacheManager::GetInstance()->stats_.size(), 1U); | 66 WebCacheManager::GetInstance()->stats_.size(), 1U); |
66 } | 67 } |
OLD | NEW |