blob: 83e8dae94348ad62a0a3bbfa07ef6d5c62ffa624 [file] [log] [blame]
// Copyright (c) 2012 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>
#include "base/memory/scoped_ptr.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/bookmarks/bookmark_model_factory.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_model_observer_for_cocoa.h"
#import "chrome/browser/ui/cocoa/cocoa_profile_test.h"
namespace {
class BookmarkModelObserverForCocoaTest : public CocoaProfileTest {
};
TEST_F(BookmarkModelObserverForCocoaTest, TestCallback) {
BookmarkModel* model = BookmarkModelFactory::GetForProfile(profile());
const BookmarkNode* node = model->AddURL(model->bookmark_bar_node(),
0, ASCIIToUTF16("super"),
GURL("http://www.google.com"));
__block size_t pings = 0U;
__block size_t deletions = 0U;
BookmarkModelObserverForCocoa::ChangeCallback callback =
^(BOOL nodeWasDeleted) {
++pings;
if (nodeWasDeleted)
++deletions;
};
scoped_ptr<BookmarkModelObserverForCocoa>
observer(new BookmarkModelObserverForCocoa(model,
callback));
observer->StartObservingNode(node);
EXPECT_EQ(0U, pings);
EXPECT_EQ(0U, deletions);
model->SetTitle(node, ASCIIToUTF16("duper"));
EXPECT_EQ(1U, pings);
EXPECT_EQ(0U, deletions);
model->SetURL(node, GURL("http://www.google.com/reader"));
EXPECT_EQ(2U, pings);
EXPECT_EQ(0U, deletions);
model->Move(node, model->other_node(), 0);
EXPECT_EQ(3U, pings);
EXPECT_EQ(0U, deletions);
model->Remove(node->parent(), 0);
EXPECT_EQ(4U, pings);
EXPECT_EQ(1U, deletions);
}
} // namespace