10f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 20f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 30f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)// found in the LICENSE file. 40f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 50f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/browser/apps/app_browsertest_util.h" 60f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/browser/extensions/extension_test_message_listener.h" 70f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 80f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)// This class of BrowserTests is a helper to create tests related to crashes in 90f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)// Chrome Apps. To be tested, the app will have to be placed as any other test 100f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)// app (see PlatformAppBrowserTest) and will need to send a "Done" message back. 110f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)// When the "Done" message is received, the test succeed. If it is not, it is 120f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)// assumed that Chrome has crashed and the test will anyway fail. 130f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)// 140f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)// The entry in this file should be something like: 150f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)// IN_PROC_BROWSER_TEST_F(AppCrashTest, <TEST_NAME>) { 160f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)// ASSERT_TRUE(RunAppCrashTest("<DIRECTORY_TEST_NAME>")); 170f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)// } 180f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 190f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)class AppCrashTest : public extensions::PlatformAppBrowserTest { 200f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)public: 210f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) bool RunAppCrashTest(const char* name) { 220f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ExtensionTestMessageListener listener("Done", false); 230f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) LoadAndLaunchPlatformApp(name); 240f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) return listener.WaitUntilSatisfied(); 250f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) } 260f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)}; 270f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 280f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(AppCrashTest, HiddenWindows) { 290f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_TRUE(RunAppCrashTest("crashtest_hidden_windows")); 300f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 31