Index: chrome/test/gpu/gpu_crash_browsertest.cc |
=================================================================== |
--- chrome/test/gpu/gpu_crash_browsertest.cc (revision 175856) |
+++ chrome/test/gpu/gpu_crash_browsertest.cc (working copy) |
@@ -1,180 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "base/command_line.h" |
-#include "base/path_service.h" |
-#include "base/utf_string_conversions.h" |
-#include "chrome/browser/api/infobars/confirm_infobar_delegate.h" |
-#include "chrome/browser/api/infobars/infobar_service.h" |
-#include "chrome/browser/ui/browser.h" |
-#include "chrome/browser/ui/browser_commands.h" |
-#include "chrome/browser/ui/browser_navigator.h" |
-#include "chrome/browser/ui/browser_tabstrip.h" |
-#include "chrome/common/chrome_notification_types.h" |
-#include "chrome/common/chrome_paths.h" |
-#include "chrome/common/chrome_switches.h" |
-#include "chrome/common/url_constants.h" |
-#include "chrome/test/base/in_process_browser_test.h" |
-#include "chrome/test/base/test_launcher_utils.h" |
-#include "chrome/test/base/ui_test_utils.h" |
-#include "content/public/browser/gpu_data_manager.h" |
-#include "content/public/browser/notification_service.h" |
-#include "content/public/browser/notification_types.h" |
-#include "content/public/common/content_paths.h" |
-#include "content/public/common/page_transition_types.h" |
-#include "content/public/test/browser_test_utils.h" |
-#include "content/test/gpu/gpu_test_config.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "ui/gl/gl_implementation.h" |
- |
-namespace { |
- |
-void SimulateGPUCrash(Browser* browser) { |
- // None of the ui_test_utils entry points supports what we need to |
- // do here: navigate with the PAGE_TRANSITION_FROM_ADDRESS_BAR flag, |
- // without waiting for the navigation. It would be painful to change |
- // either of the NavigateToURL entry points to support these two |
- // constraints, so we use chrome::Navigate directly. |
- chrome::NavigateParams params( |
- browser, |
- GURL(chrome::kChromeUIGpuCrashURL), |
- static_cast<content::PageTransition>( |
- content::PAGE_TRANSITION_TYPED | |
- content::PAGE_TRANSITION_FROM_ADDRESS_BAR)); |
- params.disposition = NEW_BACKGROUND_TAB; |
- chrome::Navigate(¶ms); |
-} |
- |
-} // namespace |
- |
-class GPUCrashTest : public InProcessBrowserTest { |
- protected: |
- virtual void SetUpCommandLine(CommandLine* command_line) { |
- // GPU tests require gpu acceleration. |
- // We do not care which GL backend is used. |
- command_line->AppendSwitchASCII(switches::kUseGL, "any"); |
- } |
- virtual void SetUpInProcessBrowserTestFixture() { |
- FilePath test_dir; |
- ASSERT_TRUE(PathService::Get(content::DIR_TEST_DATA, &test_dir)); |
- gpu_test_dir_ = test_dir.AppendASCII("gpu"); |
- } |
- FilePath gpu_test_dir_; |
-}; |
- |
-IN_PROC_BROWSER_TEST_F(GPUCrashTest, Kill) { |
- // crbug.com/162982, flaky on Mac Retina Release. |
- if (GPUTestBotConfig::CurrentConfigMatches("MAC NVIDIA 0x0fd5 RELEASE")) |
- return; |
- |
- content::DOMMessageQueue message_queue; |
- |
- content::GpuDataManager::GetInstance()-> |
- DisableDomainBlockingFor3DAPIsForTesting(); |
- |
- // Load page and wait for it to load. |
- content::WindowedNotificationObserver observer( |
- content::NOTIFICATION_LOAD_STOP, |
- content::NotificationService::AllSources()); |
- ui_test_utils::NavigateToURL( |
- browser(), |
- content::GetFileUrlWithQuery( |
- gpu_test_dir_.AppendASCII("webgl.html"), "query=kill")); |
- observer.Wait(); |
- |
- SimulateGPUCrash(browser()); |
- |
- std::string m; |
- ASSERT_TRUE(message_queue.WaitForMessage(&m)); |
- EXPECT_EQ("\"SUCCESS\"", m); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(GPUCrashTest, ContextLossRaisesInfobar) { |
- // crbug.com/162982, flaky on Mac Retina Release. |
- if (GPUTestBotConfig::CurrentConfigMatches("MAC NVIDIA 0x0fd5 RELEASE")) |
- return; |
- |
- // Load page and wait for it to load. |
- content::WindowedNotificationObserver observer( |
- content::NOTIFICATION_LOAD_STOP, |
- content::NotificationService::AllSources()); |
- ui_test_utils::NavigateToURL( |
- browser(), |
- content::GetFileUrlWithQuery( |
- gpu_test_dir_.AppendASCII("webgl.html"), "query=kill")); |
- observer.Wait(); |
- |
- content::WindowedNotificationObserver infobar_added( |
- chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_ADDED, |
- content::NotificationService::AllSources()); |
- SimulateGPUCrash(browser()); |
- infobar_added.Wait(); |
- EXPECT_EQ(1u, |
- InfoBarService::FromWebContents( |
- chrome::GetActiveWebContents(browser()))->GetInfoBarCount()); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(GPUCrashTest, ContextLossInfobarReload) { |
- // crbug.com/162982, flaky on Mac Retina Release. |
- if (GPUTestBotConfig::CurrentConfigMatches("MAC NVIDIA 0x0fd5 RELEASE")) |
- return; |
- |
- content::DOMMessageQueue message_queue; |
- |
- // Load page and wait for it to load. |
- content::WindowedNotificationObserver observer( |
- content::NOTIFICATION_LOAD_STOP, |
- content::NotificationService::AllSources()); |
- ui_test_utils::NavigateToURL( |
- browser(), |
- content::GetFileUrlWithQuery( |
- gpu_test_dir_.AppendASCII("webgl.html"), |
- "query=kill_after_notification")); |
- observer.Wait(); |
- |
- std::string m; |
- ASSERT_TRUE(message_queue.WaitForMessage(&m)); |
- EXPECT_EQ("\"LOADED\"", m); |
- |
- message_queue.ClearQueue(); |
- |
- content::WindowedNotificationObserver infobar_added( |
- chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_ADDED, |
- content::NotificationService::AllSources()); |
- SimulateGPUCrash(browser()); |
- infobar_added.Wait(); |
- ASSERT_EQ(1u, |
- InfoBarService::FromWebContents( |
- chrome::GetActiveWebContents(browser()))->GetInfoBarCount()); |
- InfoBarDelegate* delegate = |
- InfoBarService::FromWebContents( |
- chrome::GetActiveWebContents(browser()))->GetInfoBarDelegateAt(0); |
- ASSERT_TRUE(delegate); |
- ASSERT_TRUE(delegate->AsThreeDAPIInfoBarDelegate()); |
- delegate->AsConfirmInfoBarDelegate()->Cancel(); |
- |
- // The page should reload and another message sent to the |
- // DomAutomationController. |
- m = ""; |
- ASSERT_TRUE(message_queue.WaitForMessage(&m)); |
- EXPECT_EQ("\"LOADED\"", m); |
-} |
- |
-// There isn't any point in adding a test which calls Accept() on the |
-// ThreeDAPIInfoBarDelegate; doing so doesn't remove the infobar, and |
-// there's no concrete event that could be observed in response. |
- |
-IN_PROC_BROWSER_TEST_F(GPUCrashTest, WebkitLoseContext) { |
- content::DOMMessageQueue message_queue; |
- |
- ui_test_utils::NavigateToURL( |
- browser(), |
- content::GetFileUrlWithQuery( |
- gpu_test_dir_.AppendASCII("webgl.html"), |
- "query=WEBGL_lose_context")); |
- |
- std::string m; |
- ASSERT_TRUE(message_queue.WaitForMessage(&m)); |
- EXPECT_EQ("\"SUCCESS\"", m); |
-} |