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

Unified Diff: chrome/browser/ui/cocoa/toolbar/reload_button_unittest.mm

Issue 7466016: Fix up reload button to not flicker, and simplify implementation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix up comments Created 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/toolbar/reload_button_unittest.mm
diff --git a/chrome/browser/ui/cocoa/toolbar/reload_button_unittest.mm b/chrome/browser/ui/cocoa/toolbar/reload_button_unittest.mm
index 29a5acda8af4ba7be61a6ee65796861c52d39c67..66464789cc6c7379a2f3b5c21eab413ef665ca57 100644
--- a/chrome/browser/ui/cocoa/toolbar/reload_button_unittest.mm
+++ b/chrome/browser/ui/cocoa/toolbar/reload_button_unittest.mm
@@ -9,11 +9,16 @@
#include "base/memory/scoped_nsobject.h"
#include "chrome/app/chrome_command_ids.h"
#import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
+#import "chrome/browser/ui/cocoa/image_button_cell.h"
#import "chrome/browser/ui/cocoa/test_event_utils.h"
#import "testing/gtest_mac.h"
#include "testing/platform_test.h"
#import "third_party/ocmock/OCMock/OCMock.h"
+@interface ReloadButton (Testing)
++ (void)setPendingReloadTimeout:(NSTimeInterval)seconds;
+@end
+
@protocol TargetActionMock <NSObject>
- (void)anAction:(id)sender;
@end
@@ -35,6 +40,18 @@ class ReloadButtonTest : public CocoaTest {
[[test_window() contentView] addSubview:button_];
}
+ bool IsMouseInside() {
+ return [[button_ cell] isMouseInside];
+ }
+
+ void MouseEnter() {
+ [[button_ cell] mouseEntered:nil];
+ }
+
+ void MouseExit() {
+ [[button_ cell] mouseExited:nil];
+ }
+
ReloadButton* button_;
};
@@ -42,12 +59,10 @@ TEST_VIEW(ReloadButtonTest, button_)
// Test that mouse-tracking is setup and does the right thing.
TEST_F(ReloadButtonTest, IsMouseInside) {
- EXPECT_TRUE([[button_ trackingAreas] containsObject:[button_ trackingArea]]);
-
- EXPECT_FALSE([button_ isMouseInside]);
- [button_ mouseEntered:nil];
- EXPECT_TRUE([button_ isMouseInside]);
- [button_ mouseExited:nil];
+ EXPECT_FALSE(IsMouseInside());
+ MouseEnter();
+ EXPECT_TRUE(IsMouseInside());
+ MouseExit();
}
// Verify that multiple clicks do not result in multiple messages to
@@ -92,7 +107,7 @@ TEST_F(ReloadButtonTest, UpdateTag) {
// Test that when forcing the mode, it takes effect immediately,
// regardless of whether the mouse is hovering.
TEST_F(ReloadButtonTest, SetIsLoadingForce) {
- EXPECT_FALSE([button_ isMouseInside]);
+ EXPECT_FALSE(IsMouseInside());
EXPECT_EQ(IDC_RELOAD, [button_ tag]);
// Changes to stop immediately.
@@ -105,29 +120,29 @@ TEST_F(ReloadButtonTest, SetIsLoadingForce) {
// Changes to stop immediately when the mouse is hovered, and
// doesn't change when the mouse exits.
- [button_ mouseEntered:nil];
- EXPECT_TRUE([button_ isMouseInside]);
+ MouseEnter();
+ EXPECT_TRUE(IsMouseInside());
[button_ setIsLoading:YES force:YES];
EXPECT_EQ(IDC_STOP, [button_ tag]);
- [button_ mouseExited:nil];
- EXPECT_FALSE([button_ isMouseInside]);
+ MouseExit();
+ EXPECT_FALSE(IsMouseInside());
EXPECT_EQ(IDC_STOP, [button_ tag]);
// Changes to reload immediately when the mouse is hovered, and
// doesn't change when the mouse exits.
- [button_ mouseEntered:nil];
- EXPECT_TRUE([button_ isMouseInside]);
+ MouseEnter();
+ EXPECT_TRUE(IsMouseInside());
[button_ setIsLoading:NO force:YES];
EXPECT_EQ(IDC_RELOAD, [button_ tag]);
- [button_ mouseExited:nil];
- EXPECT_FALSE([button_ isMouseInside]);
+ MouseExit();
+ EXPECT_FALSE(IsMouseInside());
EXPECT_EQ(IDC_RELOAD, [button_ tag]);
}
// Test that without force, stop mode is set immediately, but reload
// is affected by the hover status.
TEST_F(ReloadButtonTest, SetIsLoadingNoForceUnHover) {
- EXPECT_FALSE([button_ isMouseInside]);
+ EXPECT_FALSE(IsMouseInside());
EXPECT_EQ(IDC_RELOAD, [button_ tag]);
// Changes to stop immediately when the mouse is not hovering.
@@ -140,22 +155,22 @@ TEST_F(ReloadButtonTest, SetIsLoadingNoForceUnHover) {
// Changes to stop immediately when the mouse is hovered, and
// doesn't change when the mouse exits.
- [button_ mouseEntered:nil];
- EXPECT_TRUE([button_ isMouseInside]);
+ MouseEnter();
+ EXPECT_TRUE(IsMouseInside());
[button_ setIsLoading:YES force:NO];
EXPECT_EQ(IDC_STOP, [button_ tag]);
- [button_ mouseExited:nil];
- EXPECT_FALSE([button_ isMouseInside]);
+ MouseExit();
+ EXPECT_FALSE(IsMouseInside());
EXPECT_EQ(IDC_STOP, [button_ tag]);
// Does not change to reload immediately when the mouse is hovered,
// changes when the mouse exits.
- [button_ mouseEntered:nil];
- EXPECT_TRUE([button_ isMouseInside]);
+ MouseEnter();
+ EXPECT_TRUE(IsMouseInside());
[button_ setIsLoading:NO force:NO];
EXPECT_EQ(IDC_STOP, [button_ tag]);
- [button_ mouseExited:nil];
- EXPECT_FALSE([button_ isMouseInside]);
+ MouseExit();
+ EXPECT_FALSE(IsMouseInside());
EXPECT_EQ(IDC_RELOAD, [button_ tag]);
}
@@ -178,21 +193,21 @@ TEST_F(ReloadButtonTest, DISABLED_SetIsLoadingNoForceTimeout) {
const NSTimeInterval kShortTimeout = 0.1;
[ReloadButton setPendingReloadTimeout:kShortTimeout];
- EXPECT_FALSE([button_ isMouseInside]);
+ EXPECT_FALSE(IsMouseInside());
EXPECT_EQ(IDC_RELOAD, [button_ tag]);
// Move the mouse into the button and press it.
- [button_ mouseEntered:nil];
- EXPECT_TRUE([button_ isMouseInside]);
+ MouseEnter();
+ EXPECT_TRUE(IsMouseInside());
[button_ setIsLoading:YES force:NO];
EXPECT_EQ(IDC_STOP, [button_ tag]);
// Does not change to reload immediately when the mouse is hovered.
- EXPECT_TRUE([button_ isMouseInside]);
+ EXPECT_TRUE(IsMouseInside());
[button_ setIsLoading:NO force:NO];
- EXPECT_TRUE([button_ isMouseInside]);
+ EXPECT_TRUE(IsMouseInside());
EXPECT_EQ(IDC_STOP, [button_ tag]);
- EXPECT_TRUE([button_ isMouseInside]);
+ EXPECT_TRUE(IsMouseInside());
// Spin event loop until the timeout passes.
NSDate* pastTimeout = [NSDate dateWithTimeIntervalSinceNow:2 * kShortTimeout];
@@ -203,7 +218,7 @@ TEST_F(ReloadButtonTest, DISABLED_SetIsLoadingNoForceTimeout) {
// Mouse is still hovered, button is in reload mode. If the mouse
// is no longer hovered, see comment at top of function.
- EXPECT_TRUE([button_ isMouseInside]);
+ EXPECT_TRUE(IsMouseInside());
EXPECT_EQ(IDC_RELOAD, [button_ tag]);
}
@@ -214,7 +229,7 @@ TEST_F(ReloadButtonTest, StopAfterReloadSet) {
[button_ setTarget:mock_target];
[button_ setAction:@selector(anAction:)];
- EXPECT_FALSE([button_ isMouseInside]);
+ EXPECT_FALSE(IsMouseInside());
// Get to stop mode.
[button_ setIsLoading:YES force:YES];
@@ -240,8 +255,8 @@ TEST_F(ReloadButtonTest, StopAfterReloadSet) {
// If hover prevented reload mode immediately taking effect, clicks should do
// nothing, because the button should be disabled.
- [button_ mouseEntered:nil];
- EXPECT_TRUE([button_ isMouseInside]);
+ MouseEnter();
+ EXPECT_TRUE(IsMouseInside());
[button_ setIsLoading:NO force:NO];
EXPECT_EQ(IDC_STOP, [button_ tag]);
EXPECT_FALSE([button_ isEnabled]);

Powered by Google App Engine
This is Rietveld 408576698