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

Side by Side Diff: chrome/browser/ui/panels/old_base_panel_browser_test.cc

Issue 10689082: Fix flaky linux panel tests related to active state checks (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleaned up log msgs. Add fix to new tests. Created 8 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "chrome/browser/ui/panels/old_base_panel_browser_test.h" 5 #include "chrome/browser/ui/panels/old_base_panel_browser_test.h"
6 6
7 #include "chrome/browser/ui/browser_list.h" 7 #include "chrome/browser/ui/browser_list.h"
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 Panel* panel, ActiveState expected_state) { 248 Panel* panel, ActiveState expected_state) {
249 DCHECK(expected_state == SHOW_AS_ACTIVE || 249 DCHECK(expected_state == SHOW_AS_ACTIVE ||
250 expected_state == SHOW_AS_INACTIVE); 250 expected_state == SHOW_AS_INACTIVE);
251 ui_test_utils::WindowedNotificationObserver signal( 251 ui_test_utils::WindowedNotificationObserver signal(
252 chrome::NOTIFICATION_PANEL_CHANGED_ACTIVE_STATUS, 252 chrome::NOTIFICATION_PANEL_CHANGED_ACTIVE_STATUS,
253 content::Source<Panel>(panel)); 253 content::Source<Panel>(panel));
254 if (panel->IsActive() == (expected_state == SHOW_AS_ACTIVE)) 254 if (panel->IsActive() == (expected_state == SHOW_AS_ACTIVE))
255 return; // Already in required state. 255 return; // Already in required state.
256 signal.Wait(); 256 signal.Wait();
257 // Verify that transition happened in the desired direction. 257 // Verify that transition happened in the desired direction.
258 EXPECT_TRUE(panel->IsActive() == (expected_state == SHOW_AS_ACTIVE)); 258 bool expect_active = (expected_state == SHOW_AS_ACTIVE);
259 bool is_active = panel->IsActive();
260 EXPECT_TRUE(expect_active == is_active);
dcheng 2012/07/03 23:04:25 EXPECT_EQ
261 if (expect_active != is_active) {
262 LOG(WARNING) << "Expected active: " << expect_active
dcheng 2012/07/03 23:04:25 Did you mean to print this out in two different fo
263 << (expect_active ? " y" : " n")
264 << " but actual is: " << is_active
265 << (is_active ? " y" : " n")
266 << " for panel: " << panel->app_name();
267 }
259 } 268 }
260 269
261 void OldBasePanelBrowserTest::WaitForWindowSizeAvailable(Panel* panel) { 270 void OldBasePanelBrowserTest::WaitForWindowSizeAvailable(Panel* panel) {
262 scoped_ptr<NativePanelTesting> panel_testing( 271 scoped_ptr<NativePanelTesting> panel_testing(
263 CreateNativePanelTesting(panel)); 272 CreateNativePanelTesting(panel));
264 ui_test_utils::WindowedNotificationObserver signal( 273 ui_test_utils::WindowedNotificationObserver signal(
265 chrome::NOTIFICATION_PANEL_WINDOW_SIZE_KNOWN, 274 chrome::NOTIFICATION_PANEL_WINDOW_SIZE_KNOWN,
266 content::Source<Panel>(panel)); 275 content::Source<Panel>(panel));
267 if (panel_testing->IsWindowSizeKnown()) 276 if (panel_testing->IsWindowSizeKnown())
268 return; 277 return;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 EXPECT_TRUE(panel->auto_resizable()); 340 EXPECT_TRUE(panel->auto_resizable());
332 } 341 }
333 342
334 if (params.show_flag == SHOW_AS_ACTIVE) { 343 if (params.show_flag == SHOW_AS_ACTIVE) {
335 panel->Show(); 344 panel->Show();
336 } else { 345 } else {
337 panel->ShowInactive(); 346 panel->ShowInactive();
338 } 347 }
339 348
340 if (params.wait_for_fully_created) { 349 if (params.wait_for_fully_created) {
341 MessageLoopForUI::current()->RunAllPending();
342
343 #if defined(OS_LINUX) 350 #if defined(OS_LINUX)
344 // On bots, we might have a simple window manager which always activates new 351 // On bots, we might have a simple window manager which always activates new
345 // windows, and can't always deactivate them. Re-activate the main tabbed 352 // windows, and can't always deactivate them. Re-activate the main tabbed
346 // browser to "deactivate" the newly created panel. 353 // browser to "deactivate" the newly created panel.
347 if (params.expected_active_state == SHOW_AS_INACTIVE && 354 if (params.expected_active_state == SHOW_AS_INACTIVE &&
348 ui::GuessWindowManager() == ui::WM_ICE_WM) { 355 ui::GuessWindowManager() == ui::WM_ICE_WM) {
356 // Wait for new panel to become active before deactivating to ensure
357 // the activated notification is consumed before we wait for the panel
358 // to become inactive.
359 LOG(INFO) << "waiting for new to be active before deactivating";
360 WaitForPanelActiveState(panel, SHOW_AS_ACTIVE);
361 LOG(INFO) << "got initial active state";
349 browser()->window()->Activate(); 362 browser()->window()->Activate();
350 } 363 }
351 #endif 364 #endif
352 // More waiting, because gaining or losing focus may require inter-process 365 // More waiting, because gaining or losing focus may require inter-process
353 // asynchronous communication, and it is not enough to just run the local 366 // asynchronous communication, and it is not enough to just run the local
354 // message loop to make sure this activity has completed. 367 // message loop to make sure this activity has completed.
368 LOG(INFO) << "waiting for actual created active state";
355 WaitForPanelActiveState(panel, params.expected_active_state); 369 WaitForPanelActiveState(panel, params.expected_active_state);
370 LOG(INFO) << "got created active state";
356 371
357 // On Linux, window size is not available right away and we should wait 372 // On Linux, window size is not available right away and we should wait
358 // before moving forward with the test. 373 // before moving forward with the test.
359 WaitForWindowSizeAvailable(panel); 374 WaitForWindowSizeAvailable(panel);
360 375
361 // Wait for the bounds animations on creation to finish. 376 // Wait for the bounds animations on creation to finish.
362 WaitForBoundsAnimationFinished(panel); 377 WaitForBoundsAnimationFinished(panel);
363 } 378 }
364 379
365 return panel; 380 return panel;
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 } 495 }
481 496
482 void OldBasePanelBrowserTest::MoveMouse(const gfx::Point& position) { 497 void OldBasePanelBrowserTest::MoveMouse(const gfx::Point& position) {
483 PanelManager::GetInstance()->mouse_watcher()->NotifyMouseMovement(position); 498 PanelManager::GetInstance()->mouse_watcher()->NotifyMouseMovement(position);
484 } 499 }
485 500
486 std::string OldBasePanelBrowserTest::MakePanelName(int index) { 501 std::string OldBasePanelBrowserTest::MakePanelName(int index) {
487 std::string panel_name("Panel"); 502 std::string panel_name("Panel");
488 return panel_name + base::IntToString(index); 503 return panel_name + base::IntToString(index);
489 } 504 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698