diff options
author | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-03 03:07:56 +0000 |
---|---|---|
committer | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-03 03:07:56 +0000 |
commit | 4394f2bd350d8b65188e98f0227a706a0d327947 (patch) | |
tree | 9538abdc2e6c2050b31d3e2c84d9363954e5fb3c | |
parent | a3c4ef3bf3bfc924680ecb827e9f43c4c2c45ee2 (diff) | |
download | chromium_src-4394f2bd350d8b65188e98f0227a706a0d327947.zip chromium_src-4394f2bd350d8b65188e98f0227a706a0d327947.tar.gz chromium_src-4394f2bd350d8b65188e98f0227a706a0d327947.tar.bz2 |
bookmarks: Split BookmarkModel::SetURLStarred in two helper functions in bookmark_utils.
This patch splits SetURLStarred into:
- bookmark_utils::AddIfNotBookmarked
- bookmark_utils::RemoveAllBookmarks
BUG=None
TEST=None
R=sky@chromium.org
Review URL: http://codereview.chromium.org/7825017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99524 0039d316-1c4b-4281-b951-d872f2087c98
13 files changed, 82 insertions, 72 deletions
diff --git a/chrome/browser/autocomplete/history_contents_provider_unittest.cc b/chrome/browser/autocomplete/history_contents_provider_unittest.cc index 170a924..cdd8cdf 100644 --- a/chrome/browser/autocomplete/history_contents_provider_unittest.cc +++ b/chrome/browser/autocomplete/history_contents_provider_unittest.cc @@ -10,6 +10,7 @@ #include "chrome/browser/autocomplete/autocomplete_match.h" #include "chrome/browser/autocomplete/history_contents_provider.h" #include "chrome/browser/bookmarks/bookmark_model.h" +#include "chrome/browser/bookmarks/bookmark_utils.h" #include "chrome/browser/history/history.h" #include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile.h" @@ -193,8 +194,9 @@ TEST_F(HistoryContentsProviderTest, Bookmarks) { // Add a bookmark. GURL bookmark_url("http://www.google.com/4"); - profile()->GetBookmarkModel()->SetURLStarred(bookmark_url, - ASCIIToUTF16("bar"), true); + bookmark_utils::AddIfNotBookmarked(profile()->GetBookmarkModel(), + bookmark_url, + ASCIIToUTF16("bar")); // Ask for synchronous. This should only get the bookmark. AutocompleteInput sync_input(ASCIIToUTF16("bar"), string16(), true, false, @@ -251,8 +253,9 @@ TEST_F(HistoryContentsProviderTest, DeleteStarredMatch) { // Bookmark a history item. GURL bookmark_url(test_entries[2].url); - profile()->GetBookmarkModel()->SetURLStarred(bookmark_url, - ASCIIToUTF16("bar"), true); + bookmark_utils::AddIfNotBookmarked(profile()->GetBookmarkModel(), + bookmark_url, + ASCIIToUTF16("bar")); // Get the match to delete its history AutocompleteInput input(ASCIIToUTF16("bar"), string16(), true, false, true, diff --git a/chrome/browser/bookmarks/bookmark_model.cc b/chrome/browser/bookmarks/bookmark_model.cc index e96eb8c..6fb0cdf 100644 --- a/chrome/browser/bookmarks/bookmark_model.cc +++ b/chrome/browser/bookmarks/bookmark_model.cc @@ -476,30 +476,6 @@ void BookmarkModel::SortChildren(const BookmarkNode* parent) { BookmarkNodeChildrenReordered(this, parent)); } -void BookmarkModel::SetURLStarred(const GURL& url, - const string16& title, - bool is_starred) { - std::vector<const BookmarkNode*> bookmarks; - GetNodesByURL(url, &bookmarks); - bool bookmarks_exist = !bookmarks.empty(); - if (is_starred == bookmarks_exist) - return; // Nothing to do, state already matches. - - if (is_starred) { - // Create a bookmark. - const BookmarkNode* parent = GetParentForNewNodes(); - AddURL(parent, parent->child_count(), title, url); - } else { - // Remove all the bookmarks. - for (size_t i = 0; i < bookmarks.size(); ++i) { - const BookmarkNode* node = bookmarks[i]; - int index = node->parent()->GetIndexOf(node); - if (index > -1) - Remove(node->parent(), index); - } - } -} - void BookmarkModel::SetDateFolderModified(const BookmarkNode* parent, const Time time) { DCHECK(parent); diff --git a/chrome/browser/bookmarks/bookmark_model.h b/chrome/browser/bookmarks/bookmark_model.h index 2c45155..2bb5b43 100644 --- a/chrome/browser/bookmarks/bookmark_model.h +++ b/chrome/browser/bookmarks/bookmark_model.h @@ -295,13 +295,6 @@ class BookmarkModel : public NotificationObserver, public BookmarkService { // BookmarkNodeChildrenReordered method. void SortChildren(const BookmarkNode* parent); - // This is the convenience that makes sure the url is starred or not starred. - // If is_starred is false, all bookmarks for URL are removed. If is_starred is - // true and there are no bookmarks for url, a bookmark is created. - void SetURLStarred(const GURL& url, - const string16& title, - bool is_starred); - // Sets the date when the folder was modified. void SetDateFolderModified(const BookmarkNode* node, const base::Time time); diff --git a/chrome/browser/bookmarks/bookmark_model_unittest.cc b/chrome/browser/bookmarks/bookmark_model_unittest.cc index 20e964f..807243a 100644 --- a/chrome/browser/bookmarks/bookmark_model_unittest.cc +++ b/chrome/browser/bookmarks/bookmark_model_unittest.cc @@ -970,7 +970,7 @@ TEST_F(BookmarkModelTestWithProfile2, RemoveNotification) { // Add a URL. GURL url("http://www.google.com"); - bb_model_->SetURLStarred(url, string16(), true); + bookmark_utils::AddIfNotBookmarked(bb_model_, url, string16()); profile_->GetHistoryService(Profile::EXPLICIT_ACCESS)->AddPage( url, NULL, 1, GURL(), PageTransition::TYPED, diff --git a/chrome/browser/bookmarks/bookmark_utils.cc b/chrome/browser/bookmarks/bookmark_utils.cc index fcb3dc8..22563c9 100644 --- a/chrome/browser/bookmarks/bookmark_utils.cc +++ b/chrome/browser/bookmarks/bookmark_utils.cc @@ -752,4 +752,29 @@ void DeleteBookmarkFolders(BookmarkModel* model, } } +void AddIfNotBookmarked(BookmarkModel* model, + const GURL& url, + const string16& title) { + std::vector<const BookmarkNode*> bookmarks; + model->GetNodesByURL(url, &bookmarks); + if (!bookmarks.empty()) + return; // Nothing to do, a bookmark with that url already exists. + + const BookmarkNode* parent = model->GetParentForNewNodes(); + model->AddURL(parent, parent->child_count(), title, url); +} + +void RemoveAllBookmarks(BookmarkModel* model, const GURL& url) { + std::vector<const BookmarkNode*> bookmarks; + model->GetNodesByURL(url, &bookmarks); + + // Remove all the bookmarks. + for (size_t i = 0; i < bookmarks.size(); ++i) { + const BookmarkNode* node = bookmarks[i]; + int index = node->parent()->GetIndexOf(node); + if (index > -1) + model->Remove(node->parent(), index); + } +} + } // namespace bookmark_utils diff --git a/chrome/browser/bookmarks/bookmark_utils.h b/chrome/browser/bookmarks/bookmark_utils.h index 1c8556b..9cd73f7 100644 --- a/chrome/browser/bookmarks/bookmark_utils.h +++ b/chrome/browser/bookmarks/bookmark_utils.h @@ -221,9 +221,16 @@ bool NodeHasURLs(const BookmarkNode* node); bool ConfirmDeleteBookmarkNode(const BookmarkNode* node, gfx::NativeWindow window); -// Delete the list of nodes. -void DeleteBookmarkFolders(BookmarkModel* model, - const std::vector<int64>& ids); +// Deletes the bookmark folders for the given list of |ids|. +void DeleteBookmarkFolders(BookmarkModel* model, const std::vector<int64>& ids); + +// If there are no bookmarks for url, a bookmark is created. +void AddIfNotBookmarked(BookmarkModel* model, + const GURL& url, + const string16& title); + +// Removes all bookmarks for the given |url|. +void RemoveAllBookmarks(BookmarkModel* model, const GURL& url); // Number of bookmarks we'll open before prompting the user to see if they // really want to open all. diff --git a/chrome/browser/history/expire_history_backend_unittest.cc b/chrome/browser/history/expire_history_backend_unittest.cc index 6364fb3..be7370f 100644 --- a/chrome/browser/history/expire_history_backend_unittest.cc +++ b/chrome/browser/history/expire_history_backend_unittest.cc @@ -15,6 +15,7 @@ #include "base/string16.h" #include "base/utf_string_conversions.h" #include "chrome/browser/bookmarks/bookmark_model.h" +#include "chrome/browser/bookmarks/bookmark_utils.h" #include "chrome/browser/history/archived_database.h" #include "chrome/browser/history/expire_history_backend.h" #include "chrome/browser/history/history_database.h" @@ -562,7 +563,7 @@ TEST_F(ExpireHistoryTest, DontDeleteStarredURL) { // ASSERT_TRUE(HasThumbnail(url_row.id())); // Unstar the URL and delete again. - bookmark_model_.SetURLStarred(url, string16(), false); + bookmark_utils::RemoveAllBookmarks(&bookmark_model_, url); expirer_.DeleteURL(url); // Now it should be completely deleted. diff --git a/chrome/browser/history/history_backend_unittest.cc b/chrome/browser/history/history_backend_unittest.cc index 253698c..1db4272 100644 --- a/chrome/browser/history/history_backend_unittest.cc +++ b/chrome/browser/history/history_backend_unittest.cc @@ -14,6 +14,7 @@ #include "base/string16.h" #include "base/utf_string_conversions.h" #include "chrome/browser/bookmarks/bookmark_model.h" +#include "chrome/browser/bookmarks/bookmark_utils.h" #include "chrome/browser/history/history_backend.h" #include "chrome/browser/history/history_notifications.h" #include "chrome/browser/history/in_memory_database.h" @@ -386,8 +387,8 @@ TEST_F(HistoryBackendTest, URLsNoLongerBookmarked) { URLID row2_id = backend_->db_->GetRowForURL(row2.url(), NULL); // Star the two URLs. - bookmark_model_.SetURLStarred(row1.url(), string16(), true); - bookmark_model_.SetURLStarred(row2.url(), string16(), true); + bookmark_utils::AddIfNotBookmarked(&bookmark_model_, row1.url(), string16()); + bookmark_utils::AddIfNotBookmarked(&bookmark_model_, row2.url(), string16()); // Delete url 2. Because url 2 is starred this won't delete the URL, only // the visits. @@ -406,7 +407,8 @@ TEST_F(HistoryBackendTest, URLsNoLongerBookmarked) { NULL)); // Unstar row2. - bookmark_model_.SetURLStarred(row2.url(), string16(), false); + bookmark_utils::RemoveAllBookmarks(&bookmark_model_, row2.url()); + // Tell the backend it was unstarred. We have to explicitly do this as // BookmarkModel isn't wired up to the backend during testing. std::set<GURL> unstarred_urls; @@ -422,7 +424,7 @@ TEST_F(HistoryBackendTest, URLsNoLongerBookmarked) { NULL)); // Unstar row 1. - bookmark_model_.SetURLStarred(row1.url(), string16(), false); + bookmark_utils::RemoveAllBookmarks(&bookmark_model_, row1.url()); // Tell the backend it was unstarred. We have to explicitly do this as // BookmarkModel isn't wired up to the backend during testing. unstarred_urls.clear(); diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc index abc615a..ff21ae0f 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc @@ -1759,7 +1759,7 @@ void Browser::BookmarkCurrentPage() { // so that bookmarks have an icon for the page. tab->favicon_tab_helper()->SaveFavicon(); } - model->SetURLStarred(url, title, true); + bookmark_utils::AddIfNotBookmarked(model, url, title); // Make sure the model actually added a bookmark before showing the star. A // bookmark isn't created if the url is invalid. if (window_->IsActive() && model->IsBookmarked(url)) { diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm index 1976a1e..5d612c8 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm @@ -12,6 +12,7 @@ #include "base/sys_string_conversions.h" #include "base/utf_string_conversions.h" #include "chrome/browser/bookmarks/bookmark_model.h" +#include "chrome/browser/bookmarks/bookmark_utils.h" #import "chrome/browser/ui/cocoa/animation_utils.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" @@ -560,8 +561,8 @@ TEST_F(BookmarkBarControllerTest, OffTheSideButtonHidden) { EXPECT_TRUE([bar_ offTheSideButtonIsHidden]); for (int i = 0; i < 2; i++) { - model->SetURLStarred(GURL("http://www.foo.com"), ASCIIToUTF16("small"), - true); + bookmark_utils::AddIfNotBookmarked( + model, GURL("http://www.foo.com"), ASCIIToUTF16("small")); EXPECT_TRUE([bar_ offTheSideButtonIsHidden]); } @@ -628,9 +629,9 @@ TEST_F(BookmarkBarControllerTest, MenuForFolderNode) { // Test two bookmarks. GURL gurl("http://www.foo.com"); - model->SetURLStarred(gurl, ASCIIToUTF16("small"), true); - model->SetURLStarred(GURL("http://www.cnn.com"), ASCIIToUTF16("bigger title"), - true); + bookmark_utils::AddIfNotBookmarked(model, gurl, ASCIIToUTF16("small")); + bookmark_utils::AddIfNotBookmarked( + model, GURL("http://www.cnn.com"), ASCIIToUTF16("bigger title")); menu = [bar_ menuForFolderNode:model->bookmark_bar_node()]; EXPECT_EQ([menu numberOfItems], 2); NSMenuItem *item = [menu itemWithTitle:@"bigger title"]; @@ -721,24 +722,23 @@ TEST_F(BookmarkBarControllerTest, TestAddRemoveAndClear) { // TODO(viettrungluu): make the test independent of window/view size, font // metrics, button size and spacing, and everything else. string16 title1(ASCIIToUTF16("x")); - model->SetURLStarred(gurl1, title1, true); + bookmark_utils::AddIfNotBookmarked(model, gurl1, title1); EXPECT_EQ(1U, [[bar_ buttons] count]); EXPECT_EQ(1+initial_subview_count, [[buttonView subviews] count]); GURL gurl2("http://legion-of-doom.gov"); string16 title2(ASCIIToUTF16("y")); - model->SetURLStarred(gurl2, title2, true); + bookmark_utils::AddIfNotBookmarked(model, gurl2, title2); EXPECT_EQ(2U, [[bar_ buttons] count]); EXPECT_EQ(2+initial_subview_count, [[buttonView subviews] count]); for (int i = 0; i < 3; i++) { - // is_starred=false --> remove the bookmark - model->SetURLStarred(gurl2, title2, false); + bookmark_utils::RemoveAllBookmarks(model, gurl2); EXPECT_EQ(1U, [[bar_ buttons] count]); EXPECT_EQ(1+initial_subview_count, [[buttonView subviews] count]); // and bring it back - model->SetURLStarred(gurl2, title2, true); + bookmark_utils::AddIfNotBookmarked(model, gurl2, title2); EXPECT_EQ(2U, [[bar_ buttons] count]); EXPECT_EQ(2+initial_subview_count, [[buttonView subviews] count]); } @@ -819,11 +819,11 @@ TEST_F(BookmarkBarControllerTest, CheckForGrowth) { BookmarkModel* model = helper_.profile()->GetBookmarkModel(); GURL gurl1("http://www.google.com"); string16 title1(ASCIIToUTF16("x")); - model->SetURLStarred(gurl1, title1, true); + bookmark_utils::AddIfNotBookmarked(model, gurl1, title1); GURL gurl2("http://www.google.com/blah"); string16 title2(ASCIIToUTF16("y")); - model->SetURLStarred(gurl2, title2, true); + bookmark_utils::AddIfNotBookmarked(model, gurl2, title2); EXPECT_EQ(2U, [[bar_ buttons] count]); CGFloat width_1 = [[[bar_ buttons] objectAtIndex:0] frame].size.width; @@ -902,7 +902,7 @@ TEST_F(BookmarkBarControllerTest, MiddleClick) { BookmarkModel* model = helper_.profile()->GetBookmarkModel(); GURL gurl1("http://www.google.com/"); string16 title1(ASCIIToUTF16("x")); - model->SetURLStarred(gurl1, title1, true); + bookmark_utils::AddIfNotBookmarked(model, gurl1, title1); EXPECT_EQ(1U, [[bar_ buttons] count]); NSButton* first = [[bar_ buttons] objectAtIndex:0]; @@ -994,11 +994,11 @@ TEST_F(BookmarkBarControllerTest, TestButtonOrBar) { BookmarkModel* model = helper_.profile()->GetBookmarkModel(); GURL gurl1("http://www.google.com"); string16 title1(ASCIIToUTF16("x")); - model->SetURLStarred(gurl1, title1, true); + bookmark_utils::AddIfNotBookmarked(model, gurl1, title1); GURL gurl2("http://www.google.com/gurl_power"); string16 title2(ASCIIToUTF16("gurl power")); - model->SetURLStarred(gurl2, title2, true); + bookmark_utils::AddIfNotBookmarked(model, gurl2, title2); NSButton* first = [[bar_ buttons] objectAtIndex:0]; NSButton* second = [[bar_ buttons] objectAtIndex:1]; @@ -1057,9 +1057,8 @@ TEST_F(BookmarkBarControllerTest, TestDragButton) { string16 titles[] = { ASCIIToUTF16("a"), ASCIIToUTF16("b"), ASCIIToUTF16("c") }; - for (unsigned i = 0; i < arraysize(titles); i++) { - model->SetURLStarred(gurls[i], titles[i], true); - } + for (unsigned i = 0; i < arraysize(titles); i++) + bookmark_utils::AddIfNotBookmarked(model, gurls[i], titles[i]); EXPECT_EQ([[bar_ buttons] count], arraysize(titles)); EXPECT_NSEQ(@"a", [[[bar_ buttons] objectAtIndex:0] title]); @@ -1129,9 +1128,9 @@ TEST_F(BookmarkBarControllerTest, TestCopyButton) { string16 titles[] = { ASCIIToUTF16("a"), ASCIIToUTF16("b"), ASCIIToUTF16("c") }; - for (unsigned i = 0; i < arraysize(titles); i++) { - model->SetURLStarred(gurls[i], titles[i], true); - } + for (unsigned i = 0; i < arraysize(titles); i++) + bookmark_utils::AddIfNotBookmarked(model, gurls[i], titles[i]); + EXPECT_EQ([[bar_ buttons] count], arraysize(titles)); EXPECT_NSEQ(@"a", [[[bar_ buttons] objectAtIndex:0] title]); @@ -1152,7 +1151,8 @@ TEST_F(BookmarkBarControllerTest, TestCopyButton) { // buttons have the same colored text. Repeat more than once. TEST_F(BookmarkBarControllerTest, TestThemedButton) { BookmarkModel* model = helper_.profile()->GetBookmarkModel(); - model->SetURLStarred(GURL("http://www.foo.com"), ASCIIToUTF16("small"), true); + bookmark_utils::AddIfNotBookmarked( + model, GURL("http://www.foo.com"), ASCIIToUTF16("small")); BookmarkButton* button = [[bar_ buttons] objectAtIndex:0]; EXPECT_TRUE(button); @@ -1184,7 +1184,7 @@ TEST_F(BookmarkBarControllerTest, TestClearOnDealloc) { ASCIIToUTF16("b"), ASCIIToUTF16("c") }; for (size_t i = 0; i < arraysize(titles); i++) - model->SetURLStarred(gurls[i], titles[i], true); + bookmark_utils::AddIfNotBookmarked(model, gurls[i], titles[i]); // Get and retain the buttons so we can examine them after dealloc. scoped_nsobject<NSArray> buttons([[bar_ buttons] retain]); diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bubble_controller.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bubble_controller.mm index 0f63781..4885054 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bubble_controller.mm +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bubble_controller.mm @@ -7,6 +7,7 @@ #include "base/mac/mac_util.h" #include "base/sys_string_conversions.h" #include "chrome/browser/bookmarks/bookmark_model.h" +#include "chrome/browser/bookmarks/bookmark_utils.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h" #import "chrome/browser/ui/cocoa/browser_window_controller.h" #import "chrome/browser/ui/cocoa/info_bubble_view.h" @@ -275,7 +276,7 @@ void BookmarkBubbleNotificationBridge::Observe( - (IBAction)remove:(id)sender { [self stopPulsingBookmarkButton]; - model_->SetURLStarred(node_->url(), node_->GetTitle(), false); + bookmark_utils::RemoveAllBookmarks(model_, node_->url()); UserMetrics::RecordAction(UserMetricsAction("BookmarkBubble_Unstar")); node_ = NULL; // no longer valid [self ok:sender]; diff --git a/chrome/browser/ui/cocoa/view_id_util_browsertest.mm b/chrome/browser/ui/cocoa/view_id_util_browsertest.mm index ccf6581..0dacfeb 100644 --- a/chrome/browser/ui/cocoa/view_id_util_browsertest.mm +++ b/chrome/browser/ui/cocoa/view_id_util_browsertest.mm @@ -6,6 +6,7 @@ #include "base/command_line.h" #include "base/utf_string_conversions.h" #include "chrome/browser/bookmarks/bookmark_model.h" +#include "chrome/browser/bookmarks/bookmark_utils.h" #include "chrome/browser/download/download_shelf.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/profiles/profile.h" @@ -62,8 +63,8 @@ class ViewIDTest : public InProcessBrowserTest { if (!bookmark_model->IsLoaded()) ui_test_utils::WaitForBookmarkModelToLoad(bookmark_model); - bookmark_model->SetURLStarred(GURL(chrome::kAboutBlankURL), - UTF8ToUTF16("about"), true); + bookmark_utils::AddIfNotBookmarked( + bookmark_model, GURL(chrome::kAboutBlankURL), ASCIIToUTF16("about")); } for (int i = VIEW_ID_TOOLBAR; i < VIEW_ID_PREDEFINED_COUNT; ++i) { diff --git a/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc b/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc index c2290f8..66af388 100644 --- a/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc +++ b/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc @@ -15,6 +15,7 @@ #include "chrome/browser/autocomplete/autocomplete_match.h" #include "chrome/browser/autocomplete/autocomplete_popup_model.h" #include "chrome/browser/bookmarks/bookmark_model.h" +#include "chrome/browser/bookmarks/bookmark_utils.h" #include "chrome/browser/history/history.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/search_engines/template_url.h" @@ -320,7 +321,7 @@ class OmniboxViewTest : public InProcessBrowserTest, history::SOURCE_BROWSED); history_service->SetPageContents(url, UTF8ToUTF16(entry.body)); if (entry.starred) - bookmark_model->SetURLStarred(url, string16(), true); + bookmark_utils::AddIfNotBookmarked(bookmark_model, url, string16()); } void SetupHistory() { |