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

Unified Diff: chrome/browser/logging_chrome_browsertest.cc

Issue 10082001: Convert the logging ui_test to a browser_test. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/chrome_tests.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/logging_chrome_browsertest.cc
===================================================================
--- chrome/browser/logging_chrome_browsertest.cc (revision 131993)
+++ chrome/browser/logging_chrome_browsertest.cc (working copy)
@@ -2,25 +2,23 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "build/build_config.h"
-
-#if defined(OS_WIN)
-#include <windows.h>
-#endif
-
-#include <string>
-
-#include "base/basictypes.h"
#include "base/command_line.h"
#include "base/environment.h"
#include "chrome/common/chrome_switches.h"
+#include "chrome/common/url_constants.h"
#include "chrome/common/env_vars.h"
#include "chrome/common/logging_chrome.h"
-#include "chrome/test/automation/automation_proxy.h"
-#include "chrome/test/automation/browser_proxy.h"
-#include "chrome/test/ui/ui_test.h"
+#include "chrome/test/base/in_process_browser_test.h"
+#include "chrome/test/base/ui_test_utils.h"
+#include "content/public/browser/notification_service.h"
+#include "content/public/browser/notification_types.h"
+#include "content/public/browser/render_process_host.h"
+#include "content/public/browser/web_contents.h"
+#include "googleurl/src/gurl.h"
#include "testing/gtest/include/gtest/gtest.h"
+using content::RenderProcessHost;
+
class ChromeLoggingTest : public testing::Test {
public:
// Stores the current value of the log file name environment
@@ -66,109 +64,36 @@
RestoreEnvironmentVariable();
}
-#if (defined(OS_LINUX) || defined(OS_ANDROID)) \
- && (!defined(NDEBUG) || !defined(USE_LINUX_BREAKPAD))
-// On Linux in Debug mode, Chrome generates a SIGTRAP.
-// we do not catch SIGTRAPs, thus no crash dump.
-// This also does not work if Breakpad is disabled.
-#define EXPECTED_ASSERT_CRASHES 0
-#else
-#define EXPECTED_ASSERT_CRASHES 1
-#endif
-
-// Virtual keyboard build will start an extra renderer process (the extension
-// process) for the virtual keyboard.
-#if defined(USE_VIRTUAL_KEYBOARD)
-#define EXPECTED_ASSERT_ERRORS 2
-#else
-#define EXPECTED_ASSERT_ERRORS 1
-#endif
-
-#if !defined(NDEBUG) // We don't have assertions in release builds.
-// Tests whether we correctly fail on renderer assertions during tests.
-class AssertionTest : public UITest {
+// Tests whether we correctly fail on browser crashes.
+class RendererCrashTest : public InProcessBrowserTest,
+ public content::NotificationObserver{
protected:
- AssertionTest() {
-#if defined(OS_WIN)
- // TODO(phajdan.jr): Make crash notifications on launch work on Win.
- wait_for_initial_loads_ = false;
-#endif
- launch_arguments_.AppendSwitch(switches::kRendererAssertTest);
- }
-};
+ RendererCrashTest() : saw_crash_(false) {}
-// Launch the app in assertion test mode, then close the app.
-#if defined(OS_WIN)
-// http://crbug.com/26715
-#define Assertion DISABLED_Assertion
-#elif defined(OS_MACOSX)
-// Crash service doesn't exist for the Mac yet: http://crbug.com/45243
-#define Assertion DISABLED_Assertion
-#endif
-TEST_F(AssertionTest, Assertion) {
- expected_errors_ = EXPECTED_ASSERT_ERRORS;
- expected_crashes_ = EXPECTED_ASSERT_CRASHES;
-}
-#endif // !defined(NDEBUG)
-
-#if !defined(GOOGLE_CHROME_BUILD)
-// Only works on Linux in Release mode with CHROME_HEADLESS=1
-class CheckFalseTest : public UITest {
- protected:
- CheckFalseTest() {
-#if defined(OS_WIN)
- // TODO(phajdan.jr): Make crash notifications on launch work on Win.
- wait_for_initial_loads_ = false;
-#endif
- launch_arguments_.AppendSwitch(switches::kRendererCheckFalseTest);
+ virtual void Observe(int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) {
+ content::RenderProcessHost::RendererClosedDetails* process_details =
+ content::Details<
+ content::RenderProcessHost::RendererClosedDetails>(
+ details).ptr();
+ base::TerminationStatus status = process_details->status;
+ if (status == base::TERMINATION_STATUS_PROCESS_CRASHED ||
+ status == base::TERMINATION_STATUS_ABNORMAL_TERMINATION) {
+ saw_crash_ = true;
+ }
+ MessageLoopForUI::current()->Quit();
}
-};
-#if defined(OS_WIN)
-// http://crbug.com/38497
-#define CheckFails DISABLED_CheckFails
-#elif defined(OS_MACOSX)
-// Crash service doesn't exist for the Mac yet: http://crbug.com/45243
-#define CheckFails DISABLED_CheckFails
-#endif
-// Launch the app in assertion test mode, then close the app.
-TEST_F(CheckFalseTest, CheckFails) {
- expected_errors_ = EXPECTED_ASSERT_ERRORS;
- expected_crashes_ = EXPECTED_ASSERT_CRASHES;
-}
-#endif // !defined(GOOGLE_CHROME_BUILD)
-
-// Tests whether we correctly fail on browser crashes during UI Tests.
-class RendererCrashTest : public UITest {
- protected:
- RendererCrashTest() {
-#if defined(OS_WIN)
- // TODO(phajdan.jr): Make crash notifications on launch work on Win.
- wait_for_initial_loads_ = false;
-#endif
- launch_arguments_.AppendSwitch(switches::kRendererCrashTest);
- }
+ bool saw_crash_;
+ content::NotificationRegistrar registrar_;
};
-#if (defined(OS_LINUX) || defined(OS_ANDROID)) && !defined(USE_LINUX_BREAKPAD)
-// On Linux, do not expect a crash dump if Breakpad is disabled.
-#define EXPECTED_CRASH_CRASHES 0
-#else
-#define EXPECTED_CRASH_CRASHES 1
-#endif
-
-#if defined(OS_MACOSX)
-// Crash service doesn't exist for the Mac yet: http://crbug.com/45243
-#define MAYBE_Crash DISABLED_Crash
-#elif defined(OS_CHROMEOS)
-#define MAYBE_Crash DISABLED_Crash
-#else
-#define MAYBE_Crash Crash
-#endif
-// Launch the app in renderer crash test mode, then close the app.
-TEST_F(RendererCrashTest, MAYBE_Crash) {
- scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0));
- ASSERT_TRUE(browser.get());
- ASSERT_TRUE(browser->WaitForTabCountToBecome(1));
- expected_crashes_ = EXPECTED_CRASH_CRASHES;
+IN_PROC_BROWSER_TEST_F(RendererCrashTest, Crash) {
+ registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED,
+ content::NotificationService::AllSources());
+ ui_test_utils::NavigateToURLWithDisposition(
+ browser(), GURL(chrome::kChromeUICrashURL), CURRENT_TAB, 0);
+ ui_test_utils::RunMessageLoop();
+ ASSERT_TRUE(saw_crash_);
}
« no previous file with comments | « no previous file | chrome/chrome_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698