| Index: chrome/browser/cocoa/window_size_autosaver_unittest.mm
|
| diff --git a/chrome/browser/cocoa/window_size_autosaver_unittest.mm b/chrome/browser/cocoa/window_size_autosaver_unittest.mm
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e5460d44e94d50d2c006d180ab97fee162e55720
|
| --- /dev/null
|
| +++ b/chrome/browser/cocoa/window_size_autosaver_unittest.mm
|
| @@ -0,0 +1,157 @@
|
| +// Copyright (c) 2009 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.
|
| +
|
| +#import <Cocoa/Cocoa.h>
|
| +
|
| +#import "chrome/browser/cocoa/window_size_autosaver.h"
|
| +
|
| +#include "base/scoped_nsobject.h"
|
| +#include "chrome/browser/cocoa/browser_test_helper.h"
|
| +#import "chrome/browser/cocoa/cocoa_test_helper.h"
|
| +#include "chrome/common/pref_service.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +#include "testing/platform_test.h"
|
| +
|
| +class WindowSizeAutosaverTest : public CocoaTest {
|
| + virtual void SetUp() {
|
| + CocoaTest::SetUp();
|
| + path_ = L"WindowSizeAutosaverTest";
|
| + window_ =
|
| + [[NSWindow alloc] initWithContentRect:NSMakeRect(100, 101, 150, 151)
|
| + styleMask:NSTitledWindowMask
|
| + backing:NSBackingStoreBuffered
|
| + defer:NO];
|
| + browser_helper_.profile()->GetPrefs()->RegisterDictionaryPref(path_);
|
| + }
|
| +
|
| + virtual void TearDown() {
|
| + [window_ close];
|
| + CocoaTest::TearDown();
|
| + }
|
| +
|
| + public:
|
| + BrowserTestHelper browser_helper_;
|
| + NSWindow* window_;
|
| + const wchar_t* path_;
|
| +};
|
| +
|
| +TEST_F(WindowSizeAutosaverTest, RestoresAndSavesPos) {
|
| + PrefService* pref = browser_helper_.profile()->GetPrefs();
|
| + ASSERT_TRUE(pref != NULL);
|
| +
|
| + // Check to make sure there is no existing pref for window placement.
|
| + ASSERT_TRUE(pref->GetDictionary(path_) == NULL);
|
| +
|
| + // Ask the window to save its position, then check that a preference
|
| + // exists. We're technically passing in a pointer to the user prefs
|
| + // and not the local state prefs, but a PrefService* is a
|
| + // PrefService*, and this is a unittest.
|
| +
|
| + {
|
| + NSRect frame = [window_ frame];
|
| + // Empty state, shouldn't restore:
|
| + scoped_nsobject<WindowSizeAutosaver> sizeSaver([[WindowSizeAutosaver alloc]
|
| + initWithWindow:window_
|
| + prefService:pref
|
| + path:path_
|
| + state:kSaveWindowPos]);
|
| + EXPECT_EQ(NSMinX(frame), NSMinX([window_ frame]));
|
| + EXPECT_EQ(NSMinY(frame), NSMinY([window_ frame]));
|
| + EXPECT_EQ(NSWidth(frame), NSWidth([window_ frame]));
|
| + EXPECT_EQ(NSHeight(frame), NSHeight([window_ frame]));
|
| +
|
| + // Move and resize window, should store position but not size.
|
| + [window_ setFrame:NSMakeRect(300, 310, 50, 52) display:NO];
|
| + }
|
| +
|
| + // Another window movement -- shouldn't be recorded.
|
| + [window_ setFrame:NSMakeRect(400, 420, 160, 162) display:NO];
|
| +
|
| + {
|
| + // Should restore last stored position, but not size.
|
| + scoped_nsobject<WindowSizeAutosaver> sizeSaver([[WindowSizeAutosaver alloc]
|
| + initWithWindow:window_
|
| + prefService:pref
|
| + path:path_
|
| + state:kSaveWindowPos]);
|
| + EXPECT_EQ(300, NSMinX([window_ frame]));
|
| + EXPECT_EQ(310, NSMinY([window_ frame]));
|
| + EXPECT_EQ(160, NSWidth([window_ frame]));
|
| + EXPECT_EQ(162, NSHeight([window_ frame]));
|
| + }
|
| +
|
| + // ...and it should be in the profile, too.
|
| + EXPECT_TRUE(pref->GetDictionary(path_) != NULL);
|
| + int x, y;
|
| + DictionaryValue* windowPref = pref->GetMutableDictionary(path_);
|
| + EXPECT_FALSE(windowPref->GetInteger(L"left", &x));
|
| + EXPECT_FALSE(windowPref->GetInteger(L"right", &x));
|
| + EXPECT_FALSE(windowPref->GetInteger(L"top", &x));
|
| + EXPECT_FALSE(windowPref->GetInteger(L"bottom", &x));
|
| + ASSERT_TRUE(windowPref->GetInteger(L"x", &x));
|
| + ASSERT_TRUE(windowPref->GetInteger(L"y", &y));
|
| + EXPECT_EQ(300, x);
|
| + EXPECT_EQ(310, y);
|
| +}
|
| +
|
| +TEST_F(WindowSizeAutosaverTest, RestoresAndSavesRect) {
|
| + PrefService* pref = browser_helper_.profile()->GetPrefs();
|
| + ASSERT_TRUE(pref != NULL);
|
| +
|
| + // Check to make sure there is no existing pref for window placement.
|
| + ASSERT_TRUE(pref->GetDictionary(path_) == NULL);
|
| +
|
| + // Ask the window to save its position, then check that a preference
|
| + // exists. We're technically passing in a pointer to the user prefs
|
| + // and not the local state prefs, but a PrefService* is a
|
| + // PrefService*, and this is a unittest.
|
| +
|
| + {
|
| + NSRect frame = [window_ frame];
|
| + // Empty state, shouldn't restore:
|
| + scoped_nsobject<WindowSizeAutosaver> sizeSaver([[WindowSizeAutosaver alloc]
|
| + initWithWindow:window_
|
| + prefService:pref
|
| + path:path_
|
| + state:kSaveWindowRect]);
|
| + EXPECT_EQ(NSMinX(frame), NSMinX([window_ frame]));
|
| + EXPECT_EQ(NSMinY(frame), NSMinY([window_ frame]));
|
| + EXPECT_EQ(NSWidth(frame), NSWidth([window_ frame]));
|
| + EXPECT_EQ(NSHeight(frame), NSHeight([window_ frame]));
|
| +
|
| + // Move and resize window, should store
|
| + [window_ setFrame:NSMakeRect(300, 310, 50, 52) display:NO];
|
| + }
|
| +
|
| + // Another window movement -- shouldn't be recorded.
|
| + [window_ setFrame:NSMakeRect(400, 420, 160, 162) display:NO];
|
| +
|
| + {
|
| + // Should restore last stored size
|
| + scoped_nsobject<WindowSizeAutosaver> sizeSaver([[WindowSizeAutosaver alloc]
|
| + initWithWindow:window_
|
| + prefService:pref
|
| + path:path_
|
| + state:kSaveWindowRect]);
|
| + EXPECT_EQ(300, NSMinX([window_ frame]));
|
| + EXPECT_EQ(310, NSMinY([window_ frame]));
|
| + EXPECT_EQ(50, NSWidth([window_ frame]));
|
| + EXPECT_EQ(52, NSHeight([window_ frame]));
|
| + }
|
| +
|
| + // ...and it should be in the profile, too.
|
| + EXPECT_TRUE(pref->GetDictionary(path_) != NULL);
|
| + int x1, y1, x2, y2;
|
| + DictionaryValue* windowPref = pref->GetMutableDictionary(path_);
|
| + EXPECT_FALSE(windowPref->GetInteger(L"x", &x1));
|
| + EXPECT_FALSE(windowPref->GetInteger(L"y", &x1));
|
| + ASSERT_TRUE(windowPref->GetInteger(L"left", &x1));
|
| + ASSERT_TRUE(windowPref->GetInteger(L"right", &x2));
|
| + ASSERT_TRUE(windowPref->GetInteger(L"top", &y1));
|
| + ASSERT_TRUE(windowPref->GetInteger(L"bottom", &y2));
|
| + EXPECT_EQ(300, x1);
|
| + EXPECT_EQ(310, y1);
|
| + EXPECT_EQ(300 + 50, x2);
|
| + EXPECT_EQ(310 + 52, y2);
|
| +}
|
|
|