Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/bookmarks/bookmark_utils.h" | 5 #include "chrome/browser/ui/bookmarks/bookmark_utils.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/prefs/public/pref_service_base.h" | 8 #include "base/prefs/public/pref_service_base.h" |
| 9 #include "base/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" |
| 10 #include "chrome/browser/bookmarks/bookmark_model.h" | 10 #include "chrome/browser/bookmarks/bookmark_model.h" |
| 11 #include "chrome/browser/bookmarks/bookmark_model_factory.h" | 11 #include "chrome/browser/bookmarks/bookmark_model_factory.h" |
| 12 #include "chrome/browser/bookmarks/bookmark_utils.h" | 12 #include "chrome/browser/bookmarks/bookmark_utils.h" |
| 13 #include "chrome/browser/profiles/profile.h" | 13 #include "chrome/browser/profiles/profile.h" |
| 14 #include "chrome/browser/ui/browser.h" | 14 #include "chrome/browser/ui/browser.h" |
| 15 #include "chrome/browser/ui/browser_navigator.h" | |
| 15 #include "chrome/browser/ui/browser_tabstrip.h" | 16 #include "chrome/browser/ui/browser_tabstrip.h" |
| 16 #include "chrome/browser/ui/browser_window.h" | 17 #include "chrome/browser/ui/browser_window.h" |
| 17 #include "chrome/browser/ui/simple_message_box.h" | 18 #include "chrome/browser/ui/simple_message_box.h" |
| 18 #include "chrome/common/pref_names.h" | 19 #include "chrome/common/pref_names.h" |
| 19 #include "content/public/browser/web_contents.h" | 20 #include "content/public/browser/web_contents.h" |
| 20 #include "grit/chromium_strings.h" | 21 #include "grit/chromium_strings.h" |
| 21 #include "grit/generated_resources.h" | 22 #include "grit/generated_resources.h" |
| 22 #include "ui/base/l10n/l10n_util.h" | 23 #include "ui/base/l10n/l10n_util.h" |
| 23 | 24 |
| 24 namespace chrome { | 25 namespace chrome { |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 54 | 55 |
| 55 // Implementation of OpenAll. Opens all nodes of type URL and any children of | 56 // Implementation of OpenAll. Opens all nodes of type URL and any children of |
| 56 // |node| that are of type URL. |navigator| is the PageNavigator used to open | 57 // |node| that are of type URL. |navigator| is the PageNavigator used to open |
| 57 // URLs. After the first url is opened |opened_url| is set to true and | 58 // URLs. After the first url is opened |opened_url| is set to true and |
| 58 // |navigator| is set to the PageNavigator of the last active tab. This is done | 59 // |navigator| is set to the PageNavigator of the last active tab. This is done |
| 59 // to handle a window disposition of new window, in which case we want | 60 // to handle a window disposition of new window, in which case we want |
| 60 // subsequent tabs to open in that window. | 61 // subsequent tabs to open in that window. |
| 61 void OpenAllImpl(const BookmarkNode* node, | 62 void OpenAllImpl(const BookmarkNode* node, |
| 62 WindowOpenDisposition initial_disposition, | 63 WindowOpenDisposition initial_disposition, |
| 63 content::PageNavigator** navigator, | 64 content::PageNavigator** navigator, |
| 64 bool* opened_url) { | 65 bool* opened_url, |
| 66 content::BrowserContext* browser_context) { | |
| 65 if (node->is_url()) { | 67 if (node->is_url()) { |
| 68 if (initial_disposition == OFF_THE_RECORD && | |
|
sky
2012/12/14 17:41:12
nit: you have two spaces after ==
| |
| 69 !IsURLAllowedInIncognito(node->url(), browser_context)) | |
| 70 return; | |
| 71 | |
| 66 WindowOpenDisposition disposition; | 72 WindowOpenDisposition disposition; |
| 67 if (*opened_url) | 73 if (*opened_url) |
| 68 disposition = NEW_BACKGROUND_TAB; | 74 disposition = NEW_BACKGROUND_TAB; |
| 69 else | 75 else |
| 70 disposition = initial_disposition; | 76 disposition = initial_disposition; |
| 71 content::WebContents* opened_tab = (*navigator)->OpenURL( | 77 content::WebContents* opened_tab = (*navigator)->OpenURL( |
| 72 content::OpenURLParams(node->url(), content::Referrer(), disposition, | 78 content::OpenURLParams(node->url(), content::Referrer(), disposition, |
| 73 content::PAGE_TRANSITION_AUTO_BOOKMARK, false)); | 79 content::PAGE_TRANSITION_AUTO_BOOKMARK, false)); |
| 74 if (!*opened_url) { | 80 if (!*opened_url) { |
| 75 *opened_url = true; | 81 *opened_url = true; |
| 76 // We opened the first URL which may have opened a new window or clobbered | 82 // We opened the first URL which may have opened a new window or clobbered |
| 77 // the current page, reset the navigator just to be sure. |opened_tab| may | 83 // the current page, reset the navigator just to be sure. |opened_tab| may |
| 78 // be NULL in tests. | 84 // be NULL in tests. |
| 79 if (opened_tab) | 85 if (opened_tab) |
| 80 *navigator = opened_tab; | 86 *navigator = opened_tab; |
| 81 } | 87 } |
| 82 } else { | 88 } else { |
| 83 // For folders only open direct children. | 89 // For folders only open direct children. |
| 84 for (int i = 0; i < node->child_count(); ++i) { | 90 for (int i = 0; i < node->child_count(); ++i) { |
| 85 const BookmarkNode* child_node = node->GetChild(i); | 91 const BookmarkNode* child_node = node->GetChild(i); |
| 86 if (child_node->is_url()) | 92 if (child_node->is_url()) |
| 87 OpenAllImpl(child_node, initial_disposition, navigator, opened_url); | 93 OpenAllImpl(child_node, initial_disposition, navigator, opened_url, |
| 94 browser_context); | |
| 88 } | 95 } |
| 89 } | 96 } |
| 90 } | 97 } |
| 91 | 98 |
| 92 // Returns the total number of descendants nodes. | 99 // Returns the total number of descendants nodes. |
| 93 int ChildURLCountTotal(const BookmarkNode* node) { | 100 int ChildURLCountTotal(const BookmarkNode* node) { |
| 94 int result = 0; | 101 int result = 0; |
| 95 for (int i = 0; i < node->child_count(); ++i) { | 102 for (int i = 0; i < node->child_count(); ++i) { |
| 96 const BookmarkNode* child = node->GetChild(i); | 103 const BookmarkNode* child = node->GetChild(i); |
| 97 result++; | 104 result++; |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 123 &(entry.first), &(entry.second)); | 130 &(entry.first), &(entry.second)); |
| 124 urls->push_back(entry); | 131 urls->push_back(entry); |
| 125 } | 132 } |
| 126 } | 133 } |
| 127 | 134 |
| 128 } // namespace | 135 } // namespace |
| 129 | 136 |
| 130 void OpenAll(gfx::NativeWindow parent, | 137 void OpenAll(gfx::NativeWindow parent, |
| 131 content::PageNavigator* navigator, | 138 content::PageNavigator* navigator, |
| 132 const std::vector<const BookmarkNode*>& nodes, | 139 const std::vector<const BookmarkNode*>& nodes, |
| 133 WindowOpenDisposition initial_disposition) { | 140 WindowOpenDisposition initial_disposition, |
| 141 content::BrowserContext* browser_context) { | |
| 134 if (!ShouldOpenAll(parent, nodes)) | 142 if (!ShouldOpenAll(parent, nodes)) |
| 135 return; | 143 return; |
| 136 | 144 |
| 137 bool opened_url = false; | 145 bool opened_url = false; |
| 138 for (size_t i = 0; i < nodes.size(); ++i) | 146 for (size_t i = 0; i < nodes.size(); ++i) |
| 139 OpenAllImpl(nodes[i], initial_disposition, &navigator, &opened_url); | 147 OpenAllImpl(nodes[i], initial_disposition, &navigator, &opened_url, |
| 148 browser_context); | |
| 140 } | 149 } |
| 141 | 150 |
| 142 void OpenAll(gfx::NativeWindow parent, | 151 void OpenAll(gfx::NativeWindow parent, |
| 143 content::PageNavigator* navigator, | 152 content::PageNavigator* navigator, |
| 144 const BookmarkNode* node, | 153 const BookmarkNode* node, |
| 145 WindowOpenDisposition initial_disposition) { | 154 WindowOpenDisposition initial_disposition, |
| 155 content::BrowserContext* browser_context) { | |
| 146 std::vector<const BookmarkNode*> nodes; | 156 std::vector<const BookmarkNode*> nodes; |
| 147 nodes.push_back(node); | 157 nodes.push_back(node); |
| 148 OpenAll(parent, navigator, nodes, initial_disposition); | 158 OpenAll(parent, navigator, nodes, initial_disposition, browser_context); |
| 149 } | 159 } |
| 150 | 160 |
| 151 bool ConfirmDeleteBookmarkNode(const BookmarkNode* node, | 161 bool ConfirmDeleteBookmarkNode(const BookmarkNode* node, |
| 152 gfx::NativeWindow window) { | 162 gfx::NativeWindow window) { |
| 153 DCHECK(node && node->is_folder() && !node->empty()); | 163 DCHECK(node && node->is_folder() && !node->empty()); |
| 154 return ShowMessageBox(window, | 164 return ShowMessageBox(window, |
| 155 l10n_util::GetStringUTF16(IDS_PRODUCT_NAME), | 165 l10n_util::GetStringUTF16(IDS_PRODUCT_NAME), |
| 156 l10n_util::GetStringFUTF16Int(IDS_BOOKMARK_EDITOR_CONFIRM_DELETE, | 166 l10n_util::GetStringFUTF16Int(IDS_BOOKMARK_EDITOR_CONFIRM_DELETE, |
| 157 ChildURLCountTotal(node)), | 167 ChildURLCountTotal(node)), |
| 158 MESSAGE_BOX_TYPE_QUESTION) == MESSAGE_BOX_RESULT_YES; | 168 MESSAGE_BOX_TYPE_QUESTION) == MESSAGE_BOX_RESULT_YES; |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 189 | 199 |
| 190 void ToggleBookmarkBarWhenVisible(content::BrowserContext* browser_context) { | 200 void ToggleBookmarkBarWhenVisible(content::BrowserContext* browser_context) { |
| 191 PrefServiceBase* prefs = PrefServiceBase::FromBrowserContext(browser_context); | 201 PrefServiceBase* prefs = PrefServiceBase::FromBrowserContext(browser_context); |
| 192 const bool always_show = !prefs->GetBoolean(prefs::kShowBookmarkBar); | 202 const bool always_show = !prefs->GetBoolean(prefs::kShowBookmarkBar); |
| 193 | 203 |
| 194 // The user changed when the bookmark bar is shown, update the preferences. | 204 // The user changed when the bookmark bar is shown, update the preferences. |
| 195 prefs->SetBoolean(prefs::kShowBookmarkBar, always_show); | 205 prefs->SetBoolean(prefs::kShowBookmarkBar, always_show); |
| 196 } | 206 } |
| 197 | 207 |
| 198 } // namespace chrome | 208 } // namespace chrome |
| OLD | NEW |