Index: chrome/browser/cocoa/tabpose_window_unittest.mm |
diff --git a/chrome/browser/cocoa/tabpose_window_unittest.mm b/chrome/browser/cocoa/tabpose_window_unittest.mm |
index ad102502d83d863b351c8069494f051ab6f81e0c..e9ed4410bdfedd96b16a597a1c34989a6572e71f 100644 |
--- a/chrome/browser/cocoa/tabpose_window_unittest.mm |
+++ b/chrome/browser/cocoa/tabpose_window_unittest.mm |
@@ -13,12 +13,24 @@ |
class TabposeWindowTest : public CocoaTest { |
public: |
+ TabposeWindowTest() { |
+ site_instance_ = |
+ SiteInstance::CreateSiteInstance(browser_helper_.profile()); |
+ } |
+ |
+ void AppendTabToStrip() { |
+ TabContents* tab_contents = new TabContents( |
+ browser_helper_.profile(), site_instance_, MSG_ROUTING_NONE, NULL); |
+ browser_helper_.browser()->tabstrip_model()->AppendTabContents( |
+ tab_contents, /*foreground=*/true); |
+ } |
+ |
BrowserTestHelper browser_helper_; |
+ scoped_refptr<SiteInstance> site_instance_; |
}; |
// Check that this doesn't leak. |
TEST_F(TabposeWindowTest, TestShow) { |
- Browser* browser = browser_helper_.browser(); |
BrowserWindow* browser_window = browser_helper_.CreateBrowserWindow(); |
NSWindow* parent = browser_window->GetNativeHandle(); |
@@ -26,22 +38,76 @@ TEST_F(TabposeWindowTest, TestShow) { |
EXPECT_TRUE([parent isVisible]); |
// Add a few tabs to the tab strip model. |
- TabStripModel* model = browser->tabstrip_model(); |
- SiteInstance* instance = |
- SiteInstance::CreateSiteInstance(browser_helper_.profile()); |
- for (int i = 0; i < 3; ++i) { |
- TabContents* tab_contents = |
- new TabContents(browser_helper_.profile(), instance, MSG_ROUTING_NONE, |
- NULL); |
- model->AppendTabContents(tab_contents, /*foreground=*/true); |
- } |
+ for (int i = 0; i < 3; ++i) |
+ AppendTabToStrip(); |
base::ScopedNSAutoreleasePool pool; |
TabposeWindow* window = |
[TabposeWindow openTabposeFor:parent |
rect:NSMakeRect(10, 20, 250, 160) |
slomo:NO |
- tabStripModel:model]; |
+ tabStripModel:browser_helper_.browser()->tabstrip_model()]; |
+ |
+ // Should release the window. |
+ [window mouseDown:nil]; |
+ |
+ browser_helper_.CloseBrowserWindow(); |
+} |
+ |
+TEST_F(TabposeWindowTest, TestModelObserver) { |
+ BrowserWindow* browser_window = browser_helper_.CreateBrowserWindow(); |
+ NSWindow* parent = browser_window->GetNativeHandle(); |
+ [parent orderFront:nil]; |
+ |
+ // Add a few tabs to the tab strip model. |
+ for (int i = 0; i < 3; ++i) |
+ AppendTabToStrip(); |
+ |
+ base::ScopedNSAutoreleasePool pool; |
+ TabposeWindow* window = |
+ [TabposeWindow openTabposeFor:parent |
+ rect:NSMakeRect(10, 20, 250, 160) |
+ slomo:NO |
+ tabStripModel:browser_helper_.browser()->tabstrip_model()]; |
+ |
+ // Exercise all the model change events. |
+ TabStripModel* model = browser_helper_.browser()->tabstrip_model(); |
+ DCHECK_EQ([window thumbnailLayerCount], 3u); |
+ DCHECK_EQ([window selectedIndex], 2); |
+ |
+ model->MoveTabContentsAt(0, 2, /*select_after_move=*/false); |
+ DCHECK_EQ([window thumbnailLayerCount], 3u); |
+ DCHECK_EQ([window selectedIndex], 1); |
+ |
+ model->MoveTabContentsAt(2, 0, /*select_after_move=*/false); |
+ DCHECK_EQ([window thumbnailLayerCount], 3u); |
+ DCHECK_EQ([window selectedIndex], 2); |
+ |
+ [window selectTileAtIndexWithoutAnimation:0]; |
+ DCHECK_EQ([window selectedIndex], 0); |
+ |
+ model->MoveTabContentsAt(0, 2, /*select_after_move=*/false); |
+ DCHECK_EQ([window selectedIndex], 2); |
+ |
+ model->MoveTabContentsAt(2, 0, /*select_after_move=*/false); |
+ DCHECK_EQ([window selectedIndex], 0); |
+ |
+ delete model->DetachTabContentsAt(0); |
+ DCHECK_EQ([window thumbnailLayerCount], 2u); |
+ DCHECK_EQ([window selectedIndex], 0); |
+ |
+ AppendTabToStrip(); |
+ DCHECK_EQ([window thumbnailLayerCount], 3u); |
+ DCHECK_EQ([window selectedIndex], 0); |
+ |
+ model->CloseTabContentsAt(0, TabStripModel::CLOSE_NONE); |
+ DCHECK_EQ([window thumbnailLayerCount], 2u); |
+ DCHECK_EQ([window selectedIndex], 0); |
+ |
+ [window selectTileAtIndexWithoutAnimation:1]; |
+ model->CloseTabContentsAt(0, TabStripModel::CLOSE_NONE); |
+ DCHECK_EQ([window thumbnailLayerCount], 1u); |
+ DCHECK_EQ([window selectedIndex], 0); |
// Should release the window. |
[window mouseDown:nil]; |