Index: chrome/test/interactive_ui/fast_shutdown_interactive_uitest.cc |
=================================================================== |
--- chrome/test/interactive_ui/fast_shutdown_interactive_uitest.cc (revision 95314) |
+++ chrome/test/interactive_ui/fast_shutdown_interactive_uitest.cc (working copy) |
@@ -1,160 +0,0 @@ |
-// Copyright (c) 2011 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/file_path.h" |
-#include "base/stl_util.h" |
-#include "base/test/test_timeouts.h" |
-#include "base/test/thread_test_helper.h" |
-#include "chrome/app/chrome_command_ids.h" |
-#include "chrome/browser/net/sqlite_persistent_cookie_store.h" |
-#include "chrome/browser/ui/view_ids.h" |
-#include "chrome/common/chrome_constants.h" |
-#include "chrome/test/automation/automation_proxy.h" |
-#include "chrome/test/automation/browser_proxy.h" |
-#include "chrome/test/automation/tab_proxy.h" |
-#include "chrome/test/automation/window_proxy.h" |
-#include "chrome/test/base/ui_test_utils.h" |
-#include "chrome/test/ui/ui_test.h" |
-#include "content/browser/browser_thread.h" |
-#include "ui/base/events.h" |
-#include "ui/base/message_box_flags.h" |
-#include "ui/gfx/rect.h" |
- |
-class FastShutdown : public UITest { |
-}; |
- |
-#if defined(OS_MACOSX) |
-// SimulateOSClick is broken on the Mac: http://crbug.com/45162 |
-#define MAYBE_SlowTermination DISABLED_SlowTermination |
-#elif defined(OS_CHROMEOS) |
-// Flaky on chromeos: http://crbug.com/89173 |
-#define MAYBE_SlowTermination FLAKY_SlowTermination |
-#else |
-#define MAYBE_SlowTermination SlowTermination |
-#endif |
- |
-// Enable some temporary debugging to diagnose flakiness on Chrome OS. |
-// http://crbug.com/89173. TODO(sreeram): Delete this soon! |
-#if defined(OS_CHROMEOS) |
-#define HERE(x) LOG(ERROR) << "Here " << (x) |
-#else |
-#define HERE(x) |
-#endif |
- |
-// Loads the cookie store from |user_data_dir|. If the given |cookie| exists, |
-// puts the cookie's value in |cookie_value| and sets |has_cookie| to true. |
-// Sets |has_cookie| to false if the |cookie| wasn't found. |
-static void GetCookie( |
- const FilePath& user_data_dir, |
- const net::CookieMonster::CanonicalCookie& cookie, |
- bool* has_cookie, |
- std::string* cookie_value, |
- const scoped_refptr<base::ThreadTestHelper>& thread_helper) { |
- scoped_refptr<SQLitePersistentCookieStore> cookie_store( |
- new SQLitePersistentCookieStore( |
- user_data_dir.AppendASCII(chrome::kNotSignedInProfile) |
- .Append(chrome::kCookieFilename))); |
- HERE(1); |
- std::vector<net::CookieMonster::CanonicalCookie*> cookies; |
- ASSERT_TRUE(cookie_store->Load(&cookies)); |
- HERE(2); |
- *has_cookie = false; |
- for (size_t i = 0; i < cookies.size(); ++i) { |
- if (cookies[i]->IsEquivalent(cookie)) { |
- *has_cookie = true; |
- *cookie_value = cookies[i]->Value(); |
- } |
- } |
- cookie_store = NULL; |
- ASSERT_TRUE(thread_helper->Run()); |
- HERE(3); |
- STLDeleteElements(&cookies); |
- HERE(4); |
-} |
- |
-// This tests for a previous error where uninstalling an onbeforeunload |
-// handler would enable fast shutdown even if an onUnload handler still |
-// existed. |
-TEST_F(FastShutdown, MAYBE_SlowTermination) { |
- // Set up the DB thread (used by the cookie store during its clean up). |
- BrowserThread db_thread(BrowserThread::DB); |
- HERE(10); |
- db_thread.Start(); |
- HERE(11); |
- scoped_refptr<base::ThreadTestHelper> thread_helper( |
- new base::ThreadTestHelper( |
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB))); |
- HERE(12); |
- |
- // Only the name, domain and path are used in IsEquivalent(), so we don't |
- // care what the other fields have. |
- net::CookieMonster::CanonicalCookie cookie( |
- GURL(), // url |
- "unloaded", // name |
- "", // value |
- "", // domain |
- "/", // path |
- "", // mac_key |
- "", // mac_algorithm |
- base::Time(), // creation |
- base::Time(), // expiration |
- base::Time(), // last_access |
- false, // secure |
- false, // httponly |
- false); // has_expires |
- HERE(13); |
- |
- bool has_cookie = false; |
- std::string cookie_value; |
- |
- // Check that the cookie (to be set during unload) doesn't exist already. |
- GetCookie(user_data_dir(), cookie, &has_cookie, &cookie_value, thread_helper); |
- HERE(14); |
- EXPECT_FALSE(has_cookie); |
- EXPECT_EQ("", cookie_value); |
- |
- scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); |
- HERE(15); |
- ASSERT_TRUE(browser.get()); |
- scoped_refptr<WindowProxy> window(browser->GetWindow()); |
- HERE(16); |
- ASSERT_TRUE(window.get()); |
- |
- // This page has an unload handler. |
- const FilePath dir(FILE_PATH_LITERAL("fast_shutdown")); |
- const FilePath file(FILE_PATH_LITERAL("on_unloader.html")); |
- NavigateToURL(ui_test_utils::GetTestUrl(dir, file)); |
- HERE(17); |
- gfx::Rect bounds; |
- ASSERT_TRUE(window->GetViewBounds(VIEW_ID_TAB_CONTAINER, &bounds, true)); |
- HERE(18); |
- // This click will launch a popup which has a before unload handler. |
- ASSERT_TRUE(window->SimulateOSClick(bounds.CenterPoint(), |
- ui::EF_LEFT_BUTTON_DOWN)); |
- HERE(19); |
- ASSERT_TRUE(browser->WaitForTabCountToBecome(2)); |
- HERE(20); |
- // Close the tab, removing the one and only before unload handler. |
- scoped_refptr<TabProxy> tab(browser->GetTab(1)); |
- HERE(21); |
- ASSERT_TRUE(tab->Close(true)); |
- HERE(22); |
- |
- // Close the browser. We should launch the unload handler, which sets a |
- // cookie that's stored to disk. |
- ASSERT_TRUE(browser->ApplyAccelerator(IDC_CLOSE_WINDOW)); |
- HERE(23); |
- |
- int exit_code = -1; |
- ASSERT_TRUE(launcher_->WaitForBrowserProcessToQuit( |
- TestTimeouts::action_max_timeout_ms(), &exit_code)); |
- HERE(24); |
- EXPECT_EQ(0, exit_code); // Expect a clean shutdown. |
- |
- // Read the cookie and check that it has the expected value. |
- GetCookie(user_data_dir(), cookie, &has_cookie, &cookie_value, thread_helper); |
- HERE(25); |
- EXPECT_TRUE(has_cookie); |
- EXPECT_EQ("ohyeah", cookie_value); |
-} |