Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / bookmarks / bookmark_unittest.cc
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/search_engines/template_url_service_factory.h"
6 #include "chrome/browser/ui/tabs/tab_strip_model.h"
7 #include "chrome/common/url_constants.h"
8 #include "chrome/test/base/browser_with_test_window_test.h"
9 #include "components/search_engines/search_terms_data.h"
10 #include "components/search_engines/template_url_service.h"
11 #include "components/search_engines/template_url_service_client.h"
12 #include "content/public/browser/navigation_entry.h"
13 #include "content/public/browser/web_contents.h"
14
15 typedef BrowserWithTestWindowTest BookmarkTest;
16
17 // Verify that the detached bookmark bar is visible on the new tab page.
18 TEST_F(BookmarkTest, DetachedBookmarkBarOnNTP) {
19   AddTab(browser(), GURL(chrome::kChromeUINewTabURL));
20   EXPECT_EQ(BookmarkBar::DETACHED, browser()->bookmark_bar_state());
21 }
22
23 // Verify that the detached bookmark bar is hidden on custom NTP pages.
24 TEST_F(BookmarkTest, DetachedBookmarkBarOnCustomNTP) {
25   // Create a empty commited web contents.
26   content::WebContents* web_contents = content::WebContents::Create(
27       content::WebContents::CreateParams(browser()->profile()));
28   web_contents->GetController().LoadURL(GURL(url::kAboutBlankURL),
29                                         content::Referrer(),
30                                         ui::PAGE_TRANSITION_LINK,
31                                         std::string());
32
33   // Give it a NTP virtual URL.
34   content::NavigationController* controller = &web_contents->GetController();
35   content::NavigationEntry* entry = controller->GetVisibleEntry();
36   entry->SetVirtualURL(GURL(chrome::kChromeUINewTabURL));
37
38   // Verify that the detached bookmark bar is hidden.
39   EXPECT_EQ(BookmarkBar::HIDDEN, browser()->bookmark_bar_state());
40   browser()->tab_strip_model()->AppendWebContents(web_contents, true);
41   EXPECT_EQ(BookmarkBar::HIDDEN, browser()->bookmark_bar_state());
42 }
43
44 class BookmarkInstantExtendedTest : public BrowserWithTestWindowTest {
45  public:
46   BookmarkInstantExtendedTest() {
47   }
48
49  protected:
50   TestingProfile* CreateProfile() override {
51     TestingProfile* profile = BrowserWithTestWindowTest::CreateProfile();
52     // TemplateURLService is normally NULL during testing. Instant extended
53     // needs this service so set a custom factory function.
54     TemplateURLServiceFactory::GetInstance()->SetTestingFactory(
55         profile, &BookmarkInstantExtendedTest::CreateTemplateURLService);
56     return profile;
57   }
58
59  private:
60   static KeyedService* CreateTemplateURLService(
61       content::BrowserContext* profile) {
62     return new TemplateURLService(
63         static_cast<Profile*>(profile)->GetPrefs(),
64         make_scoped_ptr(new SearchTermsData), NULL,
65         scoped_ptr<TemplateURLServiceClient>(), NULL, NULL, base::Closure());
66   }
67
68   DISALLOW_COPY_AND_ASSIGN(BookmarkInstantExtendedTest);
69 };
70
71 // Verify that in instant extended mode the detached bookmark bar is visible on
72 // the new tab page.
73 TEST_F(BookmarkInstantExtendedTest, DetachedBookmarkBarOnNTP) {
74   AddTab(browser(), GURL(chrome::kChromeUINewTabURL));
75   EXPECT_EQ(BookmarkBar::DETACHED, browser()->bookmark_bar_state());
76 }