• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_UTILS_H_
6 #define CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_UTILS_H_
7 
8 #include <vector>
9 
10 #include "base/strings/string16.h"
11 #include "chrome/browser/ui/host_desktop.h"
12 #include "ui/base/window_open_disposition.h"
13 #include "ui/gfx/native_widget_types.h"
14 
15 class BookmarkNode;
16 class Browser;
17 class GURL;
18 class PrefService;
19 class Profile;
20 
21 namespace content {
22 class BrowserContext;
23 class PageNavigator;
24 class WebContents;
25 }
26 
27 namespace extensions {
28 class CommandService;
29 class Extension;
30 }
31 
32 namespace chrome {
33 
34 // Number of bookmarks we'll open before prompting the user to see if they
35 // really want to open all.
36 //
37 // NOTE: treat this as a const. It is not const so unit tests can change the
38 // value.
39 extern int num_bookmark_urls_before_prompting;
40 
41 // Opens all the bookmarks in |nodes| that are of type url and all the child
42 // bookmarks that are of type url for folders in |nodes|. |initial_disposition|
43 // dictates how the first URL is opened, all subsequent URLs are opened as
44 // background tabs. |navigator| is used to open the URLs.
45 void OpenAll(gfx::NativeWindow parent,
46              content::PageNavigator* navigator,
47              const std::vector<const BookmarkNode*>& nodes,
48              WindowOpenDisposition initial_disposition,
49              content::BrowserContext* browser_context);
50 
51 // Convenience for OpenAll() with a single BookmarkNode.
52 void OpenAll(gfx::NativeWindow parent,
53              content::PageNavigator* navigator,
54              const BookmarkNode* node,
55              WindowOpenDisposition initial_disposition,
56              content::BrowserContext* browser_context);
57 
58 // Asks the user before deleting a non-empty bookmark folder.
59 bool ConfirmDeleteBookmarkNode(const BookmarkNode* node,
60                                gfx::NativeWindow window);
61 
62 // Shows the bookmark all tabs dialog.
63 void ShowBookmarkAllTabsDialog(Browser* browser);
64 
65 // Returns true if OpenAll() can open at least one bookmark of type url
66 // in |selection|.
67 bool HasBookmarkURLs(const std::vector<const BookmarkNode*>& selection);
68 
69 // Returns true if OpenAll() can open at least one bookmark of type url
70 // in |selection| with incognito mode.
71 bool HasBookmarkURLsAllowedInIncognitoMode(
72     const std::vector<const BookmarkNode*>& selection,
73     content::BrowserContext* browser_context);
74 
75 // Returns the bookmarkable URL for |web_contents|.
76 // This is normally the current URL, but when the page is the Instant Extended
77 // New Tab Page, the precise current URL may reflect various flags or other
78 // implementation details that don't represent data we should store
79 // in the bookmark.  In this case we instead return a URL that always
80 // means "NTP" instead of the current URL.
81 GURL GetURLToBookmark(content::WebContents* web_contents);
82 
83 // Fills in the URL and title for a bookmark of |web_contents|.
84 void GetURLAndTitleToBookmark(content::WebContents* web_contents,
85                               GURL* url,
86                               base::string16* title);
87 
88 // Toggles whether the bookmark bar is shown only on the new tab page or on
89 // all tabs. This is a preference modifier, not a visual modifier.
90 void ToggleBookmarkBarWhenVisible(content::BrowserContext* browser_context);
91 
92 // Returns a formatted version of |url| appropriate to display to a user with
93 // the given |prefs|, which may be NULL.  When re-parsing this URL, clients
94 // should call url_fixer::FixupURL().
95 base::string16 FormatBookmarkURLForDisplay(const GURL& url,
96                                            const PrefService* prefs);
97 
98 // Returns whether the Apps shortcut is enabled. If true, then the visibility
99 // of the Apps shortcut should be controllable via an item in the bookmark
100 // context menu.
101 bool IsAppsShortcutEnabled(Profile* profile,
102                            chrome::HostDesktopType host_desktop_type);
103 
104 // Returns true if the Apps shortcut should be displayed in the bookmark bar.
105 bool ShouldShowAppsShortcutInBookmarkBar(
106     Profile* profile,
107     chrome::HostDesktopType host_desktop_type);
108 
109 // Whether the menu item and shortcut to bookmark a page should be removed from
110 // the user interface.
111 bool ShouldRemoveBookmarkThisPageUI(Profile* profile);
112 
113 // Whether the menu item and shortcut to bookmark open pages should be removed
114 // from the user interface.
115 bool ShouldRemoveBookmarkOpenPagesUI(Profile* profile);
116 
117 }  // namespace chrome
118 
119 #endif  // CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_UTILS_H_
120