summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorflackr@chromium.org <flackr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-17 19:51:35 +0000
committerflackr@chromium.org <flackr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-17 19:51:35 +0000
commit4c9ee221ac11f509db94c568d7e542ac8a3fc583 (patch)
treed3d210f38288e72f393ed973fc8218397ee88c57
parentea4eecfb31a355d988afdebc0a160fcaf24eea58 (diff)
downloadchromium_src-4c9ee221ac11f509db94c568d7e542ac8a3fc583.zip
chromium_src-4c9ee221ac11f509db94c568d7e542ac8a3fc583.tar.gz
chromium_src-4c9ee221ac11f509db94c568d7e542ac8a3fc583.tar.bz2
Use bookmark manager to add/edit bookmark pages with webui_dialogs=1.
This is the first phase towards being able to replace Bookmark Editor with the WebUI Bookmark Manager as part of the GTK removal effort on ChromeOS. It does not yet have a means of selecting a folder to bookmark all of your tabs in and as such can't yet replace all calls to BookmarkEditor::Show. BUG=None TEST=Tested editing bookmarks from the popup bubble and bookmark bar in Linux and TouchUI builds. Review URL: http://codereview.chromium.org/7572022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97186 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--build/common.gypi20
-rw-r--r--chrome/browser/bookmarks/bookmark_context_menu_controller.cc12
-rw-r--r--chrome/browser/bookmarks/bookmark_editor.h4
-rw-r--r--chrome/browser/browser_resources.grd2
-rw-r--r--chrome/browser/resources/bookmark_manager/js/main.js87
-rw-r--r--chrome/browser/ui/browser.cc18
-rw-r--r--chrome/browser/ui/browser.h5
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm8
-rw-r--r--chrome/browser/ui/cocoa/browser_window_controller.mm5
-rw-r--r--chrome/browser/ui/gtk/bookmarks/bookmark_bubble_gtk.cc10
-rw-r--r--chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc15
-rw-r--r--chrome/browser/ui/views/bookmarks/bookmark_context_menu_controller_views.cc12
-rw-r--r--chrome/browser/ui/webui/chrome_web_ui_factory.cc4
-rw-r--r--chrome/chrome_browser.gypi18
14 files changed, 170 insertions, 50 deletions
diff --git a/build/common.gypi b/build/common.gypi
index 7b5cc7e..b6b2444 100644
--- a/build/common.gypi
+++ b/build/common.gypi
@@ -35,8 +35,10 @@
# Disable touch support by default.
'touchui%': 0,
- # Disable webui certificate viewer until it is complete.
- 'webui_certificate_viewer%': 0,
+ # Disable webui dialog replacements for native dialogs by default.
+ # TODO(flackr): Change this to a runtime flag triggered by
+ # --pure-views so that these dialogs can be easily tested.
+ 'webui_dialogs%': 0,
# Whether the compositor is enabled on views.
'views_compositor%': 0,
@@ -45,7 +47,7 @@
'chromeos%': '<(chromeos)',
'toolkit_uses_pure_views%': '<(toolkit_uses_pure_views)',
'touchui%': '<(touchui)',
- 'webui_certificate_viewer%': '<(webui_certificate_viewer)',
+ 'webui_dialogs%': '<(webui_dialogs)',
'views_compositor%': '<(views_compositor)',
# Compute the architecture that we're building on.
@@ -75,9 +77,9 @@
'toolkit_uses_pure_views%': 0,
}],
- # Use WebUI certificate viewer in Touch case
+ # Use WebUI dialogs in TouchUI builds.
['touchui==1', {
- 'webui_certificate_viewer%': 1
+ 'webui_dialogs%': 1,
}],
],
},
@@ -85,7 +87,7 @@
# Copy conditionally-set variables out one scope.
'chromeos%': '<(chromeos)',
'touchui%': '<(touchui)',
- 'webui_certificate_viewer%': '<(webui_certificate_viewer)',
+ 'webui_dialogs%': '<(webui_dialogs)',
'host_arch%': '<(host_arch)',
'toolkit_views%': '<(toolkit_views)',
'toolkit_uses_pure_views%': '<(toolkit_uses_pure_views)',
@@ -292,7 +294,7 @@
'enable_flapper_hacks%': '<(enable_flapper_hacks)',
'chromeos%': '<(chromeos)',
'touchui%': '<(touchui)',
- 'webui_certificate_viewer%': '<(webui_certificate_viewer)',
+ 'webui_dialogs%': '<(webui_dialogs)',
'file_manager_extension%': '<(file_manager_extension)',
'webui_task_manager%': '<(webui_task_manager)',
'inside_chromium_build%': '<(inside_chromium_build)',
@@ -661,8 +663,8 @@
['touchui==1', {
'grit_defines': ['-D', 'touchui'],
}],
- ['webui_certificate_viewer==1', {
- 'grit_defines': ['-D', 'webui_certificate_viewer'],
+ ['webui_dialogs==1', {
+ 'grit_defines': ['-D', 'webui_dialogs'],
}],
['file_manager_extension==1', {
'grit_defines': ['-D', 'file_manager_extension'],
diff --git a/chrome/browser/bookmarks/bookmark_context_menu_controller.cc b/chrome/browser/bookmarks/bookmark_context_menu_controller.cc
index ad98a03..73820d8 100644
--- a/chrome/browser/bookmarks/bookmark_context_menu_controller.cc
+++ b/chrome/browser/bookmarks/bookmark_context_menu_controller.cc
@@ -139,9 +139,15 @@ void BookmarkContextMenuController::ExecuteCommand(int id) {
}
if (selection_[0]->is_url()) {
+#if defined(WEBUI_DIALOGS)
+ Browser* browser = BrowserList::GetLastActiveWithProfile(profile_);
+ DCHECK(browser);
+ browser->OpenBookmarkManagerEditNode(selection_[0]->id());
+#else
BookmarkEditor::Show(parent_window_, profile_, parent_,
BookmarkEditor::EditDetails(selection_[0]),
BookmarkEditor::SHOW_TREE);
+#endif
} else {
BookmarkFolderEditorController::Show(profile_, parent_window_,
selection_[0], -1,
@@ -166,11 +172,17 @@ void BookmarkContextMenuController::ExecuteCommand(int id) {
UserMetrics::RecordAction(
UserMetricsAction("BookmarkBar_ContextMenu_Add"));
+#if defined(WEBUI_DIALOGS)
+ Browser* browser = BrowserList::GetLastActiveWithProfile(profile_);
+ DCHECK(browser);
+ browser->OpenBookmarkManagerAddNodeIn(selection_[0]->id());
+#else
// TODO: this should honor the index from GetParentForNewNodes.
BookmarkEditor::Show(
parent_window_, profile_,
bookmark_utils::GetParentForNewNodes(parent_, selection_, NULL),
BookmarkEditor::EditDetails(), BookmarkEditor::SHOW_TREE);
+#endif
break;
}
diff --git a/chrome/browser/bookmarks/bookmark_editor.h b/chrome/browser/bookmarks/bookmark_editor.h
index 1816420..39e99ea 100644
--- a/chrome/browser/bookmarks/bookmark_editor.h
+++ b/chrome/browser/bookmarks/bookmark_editor.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 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.
@@ -64,6 +64,8 @@ class BookmarkEditor {
// the user to choose the parent of the node.
// |parent| gives the initial parent to select in the tree for the node.
// |parent| is only used if |details.existing_node| is null.
+ // TODO(flackr): Rename this to ShowNative and add cross platform Show method
+ // which will show a WebUI version of the dialog if --pure-views is set.
static void Show(gfx::NativeWindow parent_window,
Profile* profile,
const BookmarkNode* parent,
diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
index 0710cb1..1e097f8 100644
--- a/chrome/browser/browser_resources.grd
+++ b/chrome/browser/browser_resources.grd
@@ -30,7 +30,7 @@
<include name="IDR_ABOUT_VERSION_HTML" file="resources\about_version.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
<include name="IDR_ABOUT_VERSION_JS" file="resources\about_version.js" type="BINDATA" />
<include name="IDR_BOOKMARKS_MANIFEST" file="resources\bookmark_manager\manifest.json" type="BINDATA" />
- <if expr="pp_if('webui_certificate_viewer')">
+ <if expr="pp_if('webui_dialogs')">
<include name="IDR_CERTIFICATE_VIEWER_HTML" file="resources\certificate_viewer.html" type="BINDATA" />
<include name="IDR_CERTIFICATE_VIEWER_JS" file="resources\certificate_viewer.js" type="BINDATA" />
<include name="IDR_CERTIFICATE_VIEWER_CSS" file="resources\certificate_viewer.css" type="BINDATA" />
diff --git a/chrome/browser/resources/bookmark_manager/js/main.js b/chrome/browser/resources/bookmark_manager/js/main.js
index cf3c7fc..86210bb 100644
--- a/chrome/browser/resources/bookmark_manager/js/main.js
+++ b/chrome/browser/resources/bookmark_manager/js/main.js
@@ -116,6 +116,20 @@ tree.addEventListener('change', function() {
});
/**
+ * Add an event listener to a node that will remove itself after firing once.
+ * @param {!Element} node The DOM node to add the listener to.
+ * @param {string} name The name of the event listener to add to.
+ * @param {function(Event)} handler Function called when the event fires.
+ */
+function addOneShotEventListener(node, name, handler) {
+ var f = function(e) {
+ handler(e);
+ node.removeEventListener(name, f);
+ };
+ node.addEventListener(name, f);
+}
+
+/**
* Navigates to a bookmark ID.
* @param {string} id The ID to navigate to.
* @param {boolean=} opt_updateHashNow Whether to immediately update the
@@ -150,22 +164,61 @@ function updateParentId(id) {
tree.selectedItem = bmm.treeLookup[id];
}
-// We listen to hashchange so that we can update the currently shown folder when
-// the user goes back and forward in the history.
-window.onhashchange = function(e) {
+// Process the location hash. This is called onhashchange and when the page is
+// first loaded.
+function processHash() {
var id = window.location.hash.slice(1);
+ if (!id) {
+ // If we do not have a hash select first item in the tree.
+ id = tree.items[0].bookmarkId;
+ }
var valid = false;
+ if (/^[ae]=/.test(id)) {
+ var command = id[0];
+ id = id.slice(2);
+ if (command == 'e') {
+ // If hash contains e= edit the item specified.
+ chrome.bookmarks.get(id, function(bookmarkNodes) {
+ // Verify the node to edit is a valid node.
+ if (!bookmarkNodes || bookmarkNodes.length != 1)
+ return;
+ var bookmarkNode = bookmarkNodes[0];
+ // After the list reloads edit the desired bookmark.
+ var editBookmark = function(e) {
+ var index = list.dataModel.findIndexById(bookmarkNode.id);
+ if (index != -1) {
+ var sm = list.selectionModel;
+ sm.anchorIndex = sm.leadIndex = sm.selectedIndex = index;
+ scrollIntoViewAndMakeEditable(index);
+ }
+ }
- // In case we got a search hash update the text input and the bmm.treeLookup
- // to use the new id.
- if (/^q=/.test(id)) {
+ if (list.parentId == bookmarkNode.parentId)
+ editBookmark();
+ else {
+ // Navigate to the parent folder, once it's loaded edit the bookmark.
+ addOneShotEventListener(list, 'load', editBookmark);
+ updateParentId(bookmarkNode.parentId);
+ }
+ });
+ // We handle the two cases of navigating to the bookmark to be edited
+ // above, don't run the standard navigation code below.
+ return;
+ } else if (command == 'a') {
+ // Once the parent folder is loaded add a page bookmark.
+ addOneShotEventListener(list, 'load', addPage);
+ }
+ } else if (/^q=/.test(id)) {
+ // In case we got a search hash update the text input and the
+ // bmm.treeLookup to use the new id.
setSearch(id.slice(2));
valid = true;
} else if (id == 'recent') {
valid = true;
}
+ // Navigate to bookmark 'id' (which may be a query of the form q=query).
if (valid) {
updateParentId(id);
} else {
@@ -177,6 +230,12 @@ window.onhashchange = function(e) {
}
};
+// We listen to hashchange so that we can update the currently shown folder when
+// the user goes back and forward in the history.
+window.onhashchange = function(e) {
+ processHash();
+};
+
// Activate is handled by the open-in-same-window-command.
list.addEventListener('dblclick', function(e) {
if (e.button == 0)
@@ -347,21 +406,7 @@ function getFolder(parentId) {
tree.addEventListener('load', function(e) {
// Add hard coded tree items
tree.add(recentTreeItem);
-
- // Now we can select a tree item.
- var hash = window.location.hash.slice(1);
- if (!hash) {
- // If we do not have a hash select first item in the tree.
- hash = tree.items[0].bookmarkId;
- }
-
- if (/^q=/.test(hash)) {
- var searchTerm = hash.slice(2);
- $('term').value = searchTerm;
- setSearch(searchTerm);
- } else {
- navigateTo(hash);
- }
+ processHash();
});
tree.reload();
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
index dc1e845..a5c727c 100644
--- a/chrome/browser/ui/browser.cc
+++ b/chrome/browser/ui/browser.cc
@@ -1948,16 +1948,30 @@ void Browser::OpenBookmarkManager() {
GetSingletonTabNavigateParams(GURL(chrome::kChromeUIBookmarksURL)));
}
-void Browser::OpenBookmarkManagerForNode(int64 node_id) {
+void Browser::OpenBookmarkManagerWithHash(const std::string& action,
+ int64 node_id) {
UserMetrics::RecordAction(UserMetricsAction("ShowBookmarkManager"));
UserMetrics::RecordAction(UserMetricsAction("ShowBookmarks"));
browser::NavigateParams params(GetSingletonTabNavigateParams(
GURL(chrome::kChromeUIBookmarksURL).Resolve(
- StringPrintf("/#%s", base::Int64ToString(node_id).c_str()))));
+ StringPrintf("/#%s%s", action.c_str(),
+ base::Int64ToString(node_id).c_str()))));
params.path_behavior = browser::NavigateParams::IGNORE_AND_NAVIGATE;
ShowSingletonTabOverwritingNTP(params);
}
+void Browser::OpenBookmarkManagerForNode(int64 node_id) {
+ OpenBookmarkManagerWithHash("", node_id);
+}
+
+void Browser::OpenBookmarkManagerEditNode(int64 node_id) {
+ OpenBookmarkManagerWithHash("e=", node_id);
+}
+
+void Browser::OpenBookmarkManagerAddNodeIn(int64 node_id) {
+ OpenBookmarkManagerWithHash("a=", node_id);
+}
+
void Browser::ShowAppMenu() {
// We record the user metric for this event in WrenchMenu::RunMenu.
window_->ShowAppMenu();
diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h
index 02f0e65..4797002 100644
--- a/chrome/browser/ui/browser.h
+++ b/chrome/browser/ui/browser.h
@@ -570,6 +570,8 @@ class Browser : public TabHandlerDelegate,
void OpenBookmarkManager();
void OpenBookmarkManagerForNode(int64 node_id);
+ void OpenBookmarkManagerEditNode(int64 node_id);
+ void OpenBookmarkManagerAddNodeIn(int64 node_id);
void ShowAppMenu();
void ShowHistoryTab();
void ShowDownloadsTab();
@@ -1140,6 +1142,9 @@ class Browser : public TabHandlerDelegate,
// BrowserWindow if necessary.
void UpdateBookmarkBarState(BookmarkBarStateChangeReason reason);
+ // Open the bookmark manager with a defined hash action.
+ void OpenBookmarkManagerWithHash(const std::string& action, int64 node_id);
+
// Data members /////////////////////////////////////////////////////////////
NotificationRegistrar registrar_;
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm
index b9fcf6f..32792d2 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm
@@ -591,6 +591,9 @@ void RecordAppLaunch(Profile* profile, GURL url) {
return;
}
+#if defined(WEBUI_DIALOGS)
+ browser_->OpenBookmarkManagerEditNode(node->id());
+#else
// There is no real need to jump to a platform-common routine at
// this point (which just jumps back to objc) other than consistency
// across platforms.
@@ -603,6 +606,7 @@ void RecordAppLaunch(Profile* profile, GURL url) {
node->parent(),
BookmarkEditor::EditDetails(node),
BookmarkEditor::SHOW_TREE);
+#endif
}
- (IBAction)cutBookmark:(id)sender {
@@ -680,11 +684,15 @@ void RecordAppLaunch(Profile* profile, GURL url) {
const BookmarkNode* parent = [self nodeFromMenuItem:sender];
if (!parent)
parent = bookmarkModel_->bookmark_bar_node();
+#if defined(WEBUI_DIALOGS)
+ browser_->OpenBookmarkManagerAddNodeIn(parent->id());
+#else
BookmarkEditor::Show([[self view] window],
browser_->profile(),
parent,
BookmarkEditor::EditDetails(),
BookmarkEditor::SHOW_TREE);
+#endif
}
// Might be called from the context menu over the bar OR over a
diff --git a/chrome/browser/ui/cocoa/browser_window_controller.mm b/chrome/browser/ui/cocoa/browser_window_controller.mm
index 3c89b2c..7f5f04e 100644
--- a/chrome/browser/ui/cocoa/browser_window_controller.mm
+++ b/chrome/browser/ui/cocoa/browser_window_controller.mm
@@ -1662,6 +1662,10 @@ enum {
if (responds) {
const BookmarkNode* node = [sender node];
if (node) {
+#if defined(WEBUI_DIALOGS)
+ DCHECK(browser_);
+ browser_->OpenBookmarkManagerEditNode(node->id());
+#else
// A BookmarkEditorController is a sheet that owns itself, and
// deallocates itself when closed.
[[[BookmarkEditorController alloc]
@@ -1671,6 +1675,7 @@ enum {
node:node
configuration:BookmarkEditor::SHOW_TREE]
runAsModalSheet];
+#endif
}
}
}
diff --git a/chrome/browser/ui/gtk/bookmarks/bookmark_bubble_gtk.cc b/chrome/browser/ui/gtk/bookmarks/bookmark_bubble_gtk.cc
index e618c18..a27505b 100644
--- a/chrome/browser/ui/gtk/bookmarks/bookmark_bubble_gtk.cc
+++ b/chrome/browser/ui/gtk/bookmarks/bookmark_bubble_gtk.cc
@@ -17,6 +17,8 @@
#include "chrome/browser/bookmarks/bookmark_utils.h"
#include "chrome/browser/bookmarks/recently_used_folders_combo_model.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/gtk/gtk_theme_service.h"
#include "chrome/browser/ui/gtk/gtk_util.h"
#include "chrome/common/chrome_notification_types.h"
@@ -306,17 +308,25 @@ void BookmarkBubbleGtk::ShowEditor() {
// Commit any edits now.
ApplyEdits();
+#if !defined(WEBUI_DIALOGS)
// Closing might delete us, so we'll cache what we need on the stack.
Profile* profile = profile_;
GtkWindow* toplevel = GTK_WINDOW(gtk_widget_get_toplevel(anchor_));
+#endif
// Close the bubble, deleting the C++ objects, etc.
bubble_->Close();
if (node) {
+#if defined(WEBUI_DIALOGS)
+ Browser* browser = BrowserList::GetLastActiveWithProfile(profile_);
+ DCHECK(browser);
+ browser->OpenBookmarkManagerEditNode(node->id());
+#else
BookmarkEditor::Show(toplevel, profile, NULL,
BookmarkEditor::EditDetails(node),
BookmarkEditor::SHOW_TREE);
+#endif
}
}
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
index 9539a6f..53393e66 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
@@ -362,15 +362,10 @@ void BookmarkBubbleView::HandleButtonPressed(views::Button* sender) {
}
void BookmarkBubbleView::ShowEditor() {
-#if defined(TOUCH_UI)
- // TODO(saintlou): this brings up a modal window that can't be dismissed
- // on touch and is tracked in chromium-os by crosbug.com/13899
- bubble_->set_fade_away_on_close(true);
- Close();
-#else
const BookmarkNode* node =
profile_->GetBookmarkModel()->GetMostRecentlyAddedNodeForURL(url_);
+#if !defined(WEBUI_DIALOGS)
#if defined(OS_WIN)
// Parent the editor to our root ancestor (not the root we're in, as that
// is the info bubble and will close shortly).
@@ -389,17 +384,23 @@ void BookmarkBubbleView::ShowEditor() {
static_cast<views::NativeWidgetGtk*>(GetWidget()->native_widget())->
GetTransientParent());
#endif
+#endif
// Even though we just hid the window, we need to invoke Close to schedule
// the delete and all that.
Close();
if (node) {
+#if defined(WEBUI_DIALOGS)
+ Browser* browser = BrowserList::GetLastActiveWithProfile(profile_);
+ DCHECK(browser);
+ browser->OpenBookmarkManagerEditNode(node->id());
+#else
BookmarkEditor::Show(parent, profile_, NULL,
BookmarkEditor::EditDetails(node),
BookmarkEditor::SHOW_TREE);
- }
#endif
+ }
}
void BookmarkBubbleView::ApplyEdits() {
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_context_menu_controller_views.cc b/chrome/browser/ui/views/bookmarks/bookmark_context_menu_controller_views.cc
index e133bd8..2bfcdc8 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_context_menu_controller_views.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_context_menu_controller_views.cc
@@ -130,9 +130,15 @@ void BookmarkContextMenuControllerViews::ExecuteCommand(int id) {
}
if (selection_[0]->is_url()) {
+#if defined(WEBUI_DIALOGS)
+ Browser* browser = BrowserList::GetLastActiveWithProfile(profile_);
+ DCHECK(browser);
+ browser->OpenBookmarkManagerEditNode(selection_[0]->id());
+#else
BookmarkEditor::Show(parent_widget_->GetNativeWindow(), profile_,
parent_, BookmarkEditor::EditDetails(selection_[0]),
BookmarkEditor::SHOW_TREE);
+#endif
} else {
BookmarkFolderEditorController::Show(profile_,
parent_widget_->GetNativeWindow(), selection_[0], -1,
@@ -158,11 +164,17 @@ void BookmarkContextMenuControllerViews::ExecuteCommand(int id) {
UserMetrics::RecordAction(
UserMetricsAction("BookmarkBar_ContextMenu_Add"));
+#if defined(WEBUI_DIALOGS)
+ Browser* browser = BrowserList::GetLastActiveWithProfile(profile_);
+ DCHECK(browser);
+ browser->OpenBookmarkManagerAddNodeIn(selection_[0]->id());
+#else
// TODO: this should honor the index from GetParentForNewNodes.
BookmarkEditor::Show(
parent_widget_->GetNativeWindow(), profile_,
bookmark_utils::GetParentForNewNodes(parent_, selection_, NULL),
BookmarkEditor::EditDetails(), BookmarkEditor::SHOW_TREE);
+#endif
break;
}
diff --git a/chrome/browser/ui/webui/chrome_web_ui_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_factory.cc
index ef25dbb..07983b5 100644
--- a/chrome/browser/ui/webui/chrome_web_ui_factory.cc
+++ b/chrome/browser/ui/webui/chrome_web_ui_factory.cc
@@ -68,7 +68,7 @@
#include "chrome/browser/ui/webui/conflicts_ui.h"
#endif
-#if defined(WEBUI_CERTIFICATE_VIEWER)
+#if defined(WEBUI_DIALOGS) && defined(OS_POSIX) && !defined(OS_MACOSX)
#include "chrome/browser/ui/webui/certificate_viewer_ui.h"
#endif
@@ -146,7 +146,7 @@ static WebUIFactoryFunction GetWebUIFactoryFunction(Profile* profile,
return &NewWebUI<BookmarksUI>;
if (url.host() == chrome::kChromeUIBugReportHost)
return &NewWebUI<BugReportUI>;
-#if defined(WEBUI_CERTIFICATE_VIEWER)
+#if defined(WEBUI_DIALOGS) && defined(OS_POSIX) && !defined(OS_MACOSX)
if (url.host() == chrome::kChromeUICertificateViewerHost)
return &NewWebUI<CertificateViewerUI>;
#endif
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index aa243cb..b4c1ad8 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -3933,7 +3933,14 @@
],
},
}],
- ['webui_certificate_viewer==0', {
+ ['webui_dialogs == 1', {
+ 'defines': [
+ 'WEBUI_DIALOGS',
+ ],
+ }],
+ # Exclude WebUI certificate viewer if not POSIX, mac (these OS's have
+ # native certificate viewers) or WebUI dialogs are disabled.
+ ['webui_dialogs == 0 or os_posix == 0 or OS == "mac"', {
'sources/': [
['exclude', '^browser/ui/webui/certificate_viewer.cc'],
['exclude', '^browser/ui/webui/certificate_viewer.h'],
@@ -3941,14 +3948,11 @@
['exclude', '^browser/ui/webui/certificate_viewer_ui.h'],
],
}],
- ['webui_certificate_viewer==1', {
+ ['webui_dialogs == 1', {
'sources/': [
['exclude', '^browser/ui/gtk/certificate_viewer.cc'],
['exclude', '^browser/ui/gtk/certificate_viewer.h'],
],
- 'defines': [
- 'WEBUI_CERTIFICATE_VIEWER',
- ],
}],
['toolkit_uses_gtk == 1', {
'dependencies': [
@@ -4595,9 +4599,9 @@
['exclude', '^browser/ui/panels/panel_browser_window_gtk.h'],
],
}],
- # Exclude the GTK cert viewer again if webui_certificate_viewer is
+ # Exclude the GTK cert viewer again if webui_dialogs are
# enabled.
- ['webui_certificate_viewer==1', {
+ ['webui_dialogs==1', {
'sources/': [
['exclude', '^browser/ui/gtk/certificate_viewer.cc'],
['exclude', '^browser/ui/gtk/certificate_viewer.h'],