Commit cd521681 authored by rbpotter's avatar rbpotter Committed by Commit Bot

Bookmarks Web UI: Use browser proxy, update tests

Change the bookmarks Web UI to use a browser proxy for communication
with C++. Also update tests to use a test version of the proxy
instead of registering test message handlers in C++.

Bug: 1022213
Change-Id: I7a824d51e1fdaa02e57baa44c555c634f8e230b1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1906959
Commit-Queue: Rebekah Potter <rbpotter@chromium.org>
Reviewed-by: default avatarDemetrios Papadopoulos <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#714368}
parent 25e68ddd
...@@ -55,6 +55,7 @@ js_type_check("closure_compile") { ...@@ -55,6 +55,7 @@ js_type_check("closure_compile") {
":actions", ":actions",
":api_listener", ":api_listener",
":app", ":app",
":browser_proxy",
":command_manager", ":command_manager",
":constants", ":constants",
":debouncer", ":debouncer",
...@@ -88,6 +89,7 @@ js_library("actions") { ...@@ -88,6 +89,7 @@ js_library("actions") {
js_library("api_listener") { js_library("api_listener") {
deps = [ deps = [
":actions", ":actions",
":browser_proxy",
":debouncer", ":debouncer",
":store", ":store",
":util", ":util",
...@@ -112,9 +114,17 @@ js_library("app") { ...@@ -112,9 +114,17 @@ js_library("app") {
externs_list = [ "$externs_path/chrome_extensions.js" ] externs_list = [ "$externs_path/chrome_extensions.js" ]
} }
js_library("browser_proxy") {
deps = [
":constants",
"//ui/webui/resources/js:cr",
]
}
js_library("command_manager") { js_library("command_manager") {
deps = [ deps = [
":api_listener", ":api_listener",
":browser_proxy",
":dialog_focus_manager", ":dialog_focus_manager",
":edit_dialog", ":edit_dialog",
":store_client", ":store_client",
...@@ -197,6 +207,7 @@ js_library("item") { ...@@ -197,6 +207,7 @@ js_library("item") {
js_library("list") { js_library("list") {
deps = [ deps = [
":actions", ":actions",
":browser_proxy",
":command_manager", ":command_manager",
":item", ":item",
":store_client", ":store_client",
......
<link rel="import" href="chrome://resources/html/cr.html"> <link rel="import" href="chrome://resources/html/cr.html">
<link rel="import" href="actions.html"> <link rel="import" href="actions.html">
<link rel="import" href="browser_proxy.html">
<link rel="import" href="debouncer.html"> <link rel="import" href="debouncer.html">
<link rel="import" href="store.html"> <link rel="import" href="store.html">
<link rel="import" href="util.html"> <link rel="import" href="util.html">
......
...@@ -172,12 +172,13 @@ cr.define('bookmarks.ApiListener', function() { ...@@ -172,12 +172,13 @@ cr.define('bookmarks.ApiListener', function() {
function init() { function init() {
listeners.forEach((listener) => listener.api.addListener(listener.fn)); listeners.forEach((listener) => listener.api.addListener(listener.fn));
cr.sendWithPromise('getIncognitoAvailability') const browserProxy = bookmarks.BrowserProxy.getInstance();
.then(onIncognitoAvailabilityChanged); browserProxy.getIncognitoAvailability().then(
onIncognitoAvailabilityChanged);
cr.addWebUIListener( cr.addWebUIListener(
'incognito-availability-changed', onIncognitoAvailabilityChanged); 'incognito-availability-changed', onIncognitoAvailabilityChanged);
cr.sendWithPromise('getCanEditBookmarks').then(onCanEditBookmarksChanged); browserProxy.getCanEditBookmarks().then(onCanEditBookmarksChanged);
cr.addWebUIListener( cr.addWebUIListener(
'can-edit-bookmarks-changed', onCanEditBookmarksChanged); 'can-edit-bookmarks-changed', onCanEditBookmarksChanged);
} }
......
...@@ -34,6 +34,12 @@ ...@@ -34,6 +34,12 @@
<structure name="IDR_BOOKMARKS_BOOKMARKS_HTML" <structure name="IDR_BOOKMARKS_BOOKMARKS_HTML"
file="bookmarks.html" file="bookmarks.html"
type="chrome_html" /> type="chrome_html" />
<structure name="IDR_BOOKMARKS_BROWSER_PROXY_HTML"
file="browser_proxy.html"
type="chrome_html" />
<structure name="IDR_BOOKMARKS_BROWSER_PROXY_JS"
file="browser_proxy.js"
type="chrome_html" />
<structure name="IDR_BOOKMARKS_COMMAND_MANAGER_HTML" <structure name="IDR_BOOKMARKS_COMMAND_MANAGER_HTML"
file="command_manager.html" file="command_manager.html"
type="chrome_html" /> type="chrome_html" />
......
<link rel="import" href="chrome://resources/html/cr.html">
<link rel="import" href="constants.html">
<script src="browser_proxy.js"></script>
// Copyright 2019 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.
cr.define('bookmarks', function() {
'use strict';
class BrowserProxy {
/**
* @return {!Promise<!IncognitoAvailability>} Promise resolved with the
* current incognito mode preference.
*/
getIncognitoAvailability() {
return cr.sendWithPromise('getIncognitoAvailability');
}
/**
* @return {!Promise<boolean>} Promise resolved with whether the bookmarks
* can be edited.
*/
getCanEditBookmarks() {
return cr.sendWithPromise('getCanEditBookmarks');
}
/**
* @return {!Promise<string>} Promise resolved with the appropriate plural
* string for |messageName| with |itemCount| items.
*/
getPluralString(messageName, itemCount) {
return cr.sendWithPromise('getPluralString', messageName, itemCount);
}
/**
* Notifies the metrics handler to record a histogram value.
* @param {string} histogram The name of the histogram to record
* @param {number} bucket The bucket to record
* @param {number} maxBucket The maximum bucket value in the histogram.
*/
recordInHistogram(histogram, bucket, maxBucket) {
chrome.send(
'metricsHandler:recordInHistogram', [histogram, bucket, maxBucket]);
}
}
cr.addSingletonGetter(BrowserProxy);
return {
BrowserProxy: BrowserProxy,
};
});
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
<link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html"> <link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html">
<link rel="import" href="chrome://resources/html/cr/ui/command.html"> <link rel="import" href="chrome://resources/html/cr/ui/command.html">
<link rel="import" href="chrome://resources/polymer/v1_0/iron-a11y-keys-behavior/iron-a11y-keys-behavior.html"> <link rel="import" href="chrome://resources/polymer/v1_0/iron-a11y-keys-behavior/iron-a11y-keys-behavior.html">
<link rel="import" href="browser_proxy.html">
<link rel="import" href="dialog_focus_manager.html"> <link rel="import" href="dialog_focus_manager.html">
<link rel="import" href="edit_dialog.html"> <link rel="import" href="edit_dialog.html">
<link rel="import" href="shared_style.html"> <link rel="import" href="shared_style.html">
......
...@@ -56,6 +56,9 @@ cr.define('bookmarks', function() { ...@@ -56,6 +56,9 @@ cr.define('bookmarks', function() {
assert(CommandManager.instance_ == null); assert(CommandManager.instance_ == null);
CommandManager.instance_ = this; CommandManager.instance_ = this;
/** @private {!bookmarks.BrowserProxy} */
this.browserProxy_ = bookmarks.BrowserProxy.getInstance();
this.watch('globalCanEdit_', state => state.prefs.canEdit); this.watch('globalCanEdit_', state => state.prefs.canEdit);
this.updateFromStore(); this.updateFromStore();
...@@ -318,8 +321,8 @@ cr.define('bookmarks', function() { ...@@ -318,8 +321,8 @@ cr.define('bookmarks', function() {
labelPromise = labelPromise =
Promise.resolve(loadTimeData.getString('toastItemCopied')); Promise.resolve(loadTimeData.getString('toastItemCopied'));
} else { } else {
labelPromise = cr.sendWithPromise( labelPromise = this.browserProxy_.getPluralString(
'getPluralString', 'toastItemsCopied', idList.length); 'toastItemsCopied', idList.length);
} }
this.showTitleToast_( this.showTitleToast_(
...@@ -344,8 +347,8 @@ cr.define('bookmarks', function() { ...@@ -344,8 +347,8 @@ cr.define('bookmarks', function() {
labelPromise = labelPromise =
Promise.resolve(loadTimeData.getString('toastItemDeleted')); Promise.resolve(loadTimeData.getString('toastItemDeleted'));
} else { } else {
labelPromise = cr.sendWithPromise( labelPromise = this.browserProxy_.getPluralString(
'getPluralString', 'toastItemsDeleted', idList.length); 'toastItemsDeleted', idList.length);
} }
chrome.bookmarkManagerPrivate.removeTrees(idList, () => { chrome.bookmarkManagerPrivate.removeTrees(idList, () => {
...@@ -778,7 +781,8 @@ cr.define('bookmarks', function() { ...@@ -778,7 +781,8 @@ cr.define('bookmarks', function() {
Command.OPEN_BOOKMARK; Command.OPEN_BOOKMARK;
} }
bookmarks.util.recordEnumHistogram(histogram, command, Command.MAX_VALUE); this.browserProxy_.recordInHistogram(
histogram, command, Command.MAX_VALUE);
}, },
/** /**
...@@ -829,7 +833,7 @@ cr.define('bookmarks', function() { ...@@ -829,7 +833,7 @@ cr.define('bookmarks', function() {
} else { } else {
this.openCommandMenuAtPosition(e.detail.x, e.detail.y, e.detail.source); this.openCommandMenuAtPosition(e.detail.x, e.detail.y, e.detail.source);
} }
bookmarks.util.recordEnumHistogram( this.browserProxy_.recordInHistogram(
'BookmarkManager.CommandMenuOpened', e.detail.source, 'BookmarkManager.CommandMenuOpened', e.detail.source,
MenuSource.NUM_VALUES); MenuSource.NUM_VALUES);
}, },
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
<link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html"> <link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html">
<link rel="import" href="chrome://resources/polymer/v1_0/iron-a11y-announcer/iron-a11y-announcer.html"> <link rel="import" href="chrome://resources/polymer/v1_0/iron-a11y-announcer/iron-a11y-announcer.html">
<link rel="import" href="chrome://resources/polymer/v1_0/iron-list/iron-list.html"> <link rel="import" href="chrome://resources/polymer/v1_0/iron-list/iron-list.html">
<link rel="import" href="browser_proxy.html">
<link rel="import" href="command_manager.html"> <link rel="import" href="command_manager.html">
<link rel="import" href="item.html"> <link rel="import" href="item.html">
<link rel="import" href="shared_style.html"> <link rel="import" href="shared_style.html">
......
...@@ -119,8 +119,8 @@ Polymer({ ...@@ -119,8 +119,8 @@ Polymer({
// Trigger a layout of the iron list. Otherwise some elements may render // Trigger a layout of the iron list. Otherwise some elements may render
// as blank entries. See https://crbug.com/848683 // as blank entries. See https://crbug.com/848683
this.$.list.fire('iron-resize'); this.$.list.fire('iron-resize');
const label = await cr.sendWithPromise( const label = await bookmarks.BrowserProxy.getInstance().getPluralString(
'getPluralString', 'listChanged', this.displayedList_.length); 'listChanged', this.displayedList_.length);
this.fire('iron-announce', {text: label}); this.fire('iron-announce', {text: label});
if (!skipFocus && selectIndex > -1) { if (!skipFocus && selectIndex > -1) {
......
...@@ -171,15 +171,6 @@ cr.define('bookmarks.util', function() { ...@@ -171,15 +171,6 @@ cr.define('bookmarks.util', function() {
return descendants; return descendants;
} }
/**
* @param {string} name
* @param {number} value
* @param {number} maxValue
*/
function recordEnumHistogram(name, value, maxValue) {
chrome.send('metricsHandler:recordInHistogram', [name, value, maxValue]);
}
/** /**
* @param {!Object<string, T>} map * @param {!Object<string, T>} map
* @param {!Set<string>} ids * @param {!Set<string>} ids
...@@ -232,7 +223,6 @@ cr.define('bookmarks.util', function() { ...@@ -232,7 +223,6 @@ cr.define('bookmarks.util', function() {
isShowingSearch: isShowingSearch, isShowingSearch: isShowingSearch,
normalizeNode: normalizeNode, normalizeNode: normalizeNode,
normalizeNodes: normalizeNodes, normalizeNodes: normalizeNodes,
recordEnumHistogram: recordEnumHistogram,
removeIdsFromMap: removeIdsFromMap, removeIdsFromMap: removeIdsFromMap,
removeIdsFromObject: removeIdsFromObject, removeIdsFromObject: removeIdsFromObject,
removeIdsFromSet: removeIdsFromSet, removeIdsFromSet: removeIdsFromSet,
......
...@@ -4,11 +4,12 @@ ...@@ -4,11 +4,12 @@
#include "chrome/browser/ui/webui/bookmarks/bookmarks_browsertest.h" #include "chrome/browser/ui/webui/bookmarks/bookmarks_browsertest.h"
#include "base/bind.h" #include <memory>
#include <utility>
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "chrome/browser/bookmarks/bookmark_model_factory.h" #include "chrome/browser/bookmarks/bookmark_model_factory.h"
#include "chrome/browser/bookmarks/managed_bookmark_service_factory.h" #include "chrome/browser/bookmarks/managed_bookmark_service_factory.h"
#include "chrome/browser/prefs/incognito_mode_prefs.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/common/pref_names.h" #include "chrome/common/pref_names.h"
...@@ -23,29 +24,6 @@ BookmarksBrowserTest::BookmarksBrowserTest() {} ...@@ -23,29 +24,6 @@ BookmarksBrowserTest::BookmarksBrowserTest() {}
BookmarksBrowserTest::~BookmarksBrowserTest() {} BookmarksBrowserTest::~BookmarksBrowserTest() {}
void BookmarksBrowserTest::RegisterMessages() {
web_ui()->RegisterMessageCallback(
"testSetIncognito",
base::BindRepeating(&BookmarksBrowserTest::HandleSetIncognitoAvailability,
base::Unretained(this)));
web_ui()->RegisterMessageCallback(
"testSetCanEdit",
base::BindRepeating(&BookmarksBrowserTest::HandleSetCanEditBookmarks,
base::Unretained(this)));
}
void BookmarksBrowserTest::SetIncognitoAvailability(int availability) {
ASSERT_TRUE(availability >= 0 &&
availability < IncognitoModePrefs::AVAILABILITY_NUM_TYPES);
browser()->profile()->GetPrefs()->SetInteger(
prefs::kIncognitoModeAvailability, availability);
}
void BookmarksBrowserTest::SetCanEditBookmarks(bool canEdit) {
browser()->profile()->GetPrefs()->SetBoolean(
bookmarks::prefs::kEditBookmarksEnabled, canEdit);
}
void BookmarksBrowserTest::SetupExtensionAPITest() { void BookmarksBrowserTest::SetupExtensionAPITest() {
// Add managed bookmarks. // Add managed bookmarks.
Profile* profile = browser()->profile(); Profile* profile = browser()->profile();
...@@ -87,37 +65,3 @@ void BookmarksBrowserTest::SetupExtensionAPIEditDisabledTest() { ...@@ -87,37 +65,3 @@ void BookmarksBrowserTest::SetupExtensionAPIEditDisabledTest() {
PrefService* prefs = user_prefs::UserPrefs::Get(profile); PrefService* prefs = user_prefs::UserPrefs::Get(profile);
prefs->SetBoolean(bookmarks::prefs::kEditBookmarksEnabled, false); prefs->SetBoolean(bookmarks::prefs::kEditBookmarksEnabled, false);
} }
void BookmarksBrowserTest::HandleSetIncognitoAvailability(
const base::ListValue* args) {
AllowJavascript();
ASSERT_EQ(2U, args->GetSize());
const base::Value* callback_id;
ASSERT_TRUE(args->Get(0, &callback_id));
int pref_value;
ASSERT_TRUE(args->GetInteger(1, &pref_value));
SetIncognitoAvailability(pref_value);
ResolveJavascriptCallback(*callback_id, base::Value());
}
void BookmarksBrowserTest::HandleSetCanEditBookmarks(
const base::ListValue* args) {
AllowJavascript();
ASSERT_EQ(2U, args->GetSize());
const base::Value* callback_id;
ASSERT_TRUE(args->Get(0, &callback_id));
bool pref_value;
ASSERT_TRUE(args->GetBoolean(1, &pref_value));
SetCanEditBookmarks(pref_value);
ResolveJavascriptCallback(*callback_id, base::Value());
}
content::WebUIMessageHandler* BookmarksBrowserTest::GetMockMessageHandler() {
return this;
}
...@@ -6,30 +6,16 @@ ...@@ -6,30 +6,16 @@
#define CHROME_BROWSER_UI_WEBUI_BOOKMARKS_BOOKMARKS_BROWSERTEST_H_ #define CHROME_BROWSER_UI_WEBUI_BOOKMARKS_BOOKMARKS_BROWSERTEST_H_
#include "chrome/test/base/web_ui_browser_test.h" #include "chrome/test/base/web_ui_browser_test.h"
#include "content/public/browser/web_ui_message_handler.h"
class BookmarksBrowserTest : public WebUIBrowserTest, class BookmarksBrowserTest : public WebUIBrowserTest {
public content::WebUIMessageHandler {
public: public:
BookmarksBrowserTest(); BookmarksBrowserTest();
~BookmarksBrowserTest() override; ~BookmarksBrowserTest() override;
void SetIncognitoAvailability(int availability);
void SetCanEditBookmarks(bool canEdit);
void SetupExtensionAPITest(); void SetupExtensionAPITest();
void SetupExtensionAPIEditDisabledTest(); void SetupExtensionAPIEditDisabledTest();
private: private:
void HandleSetIncognitoAvailability(const base::ListValue* args);
void HandleSetCanEditBookmarks(const base::ListValue* args);
// content::WebUIMessageHandler:
void RegisterMessages() override;
// WebUIBrowserTest:
content::WebUIMessageHandler* GetMockMessageHandler() override;
DISALLOW_COPY_AND_ASSIGN(BookmarksBrowserTest); DISALLOW_COPY_AND_ASSIGN(BookmarksBrowserTest);
}; };
......
...@@ -129,6 +129,9 @@ content::WebUIDataSource* CreateBookmarksUIHTMLSource(Profile* profile) { ...@@ -129,6 +129,9 @@ content::WebUIDataSource* CreateBookmarksUIHTMLSource(Profile* profile) {
source->AddResourcePath("api_listener.js", IDR_BOOKMARKS_API_LISTENER_JS); source->AddResourcePath("api_listener.js", IDR_BOOKMARKS_API_LISTENER_JS);
source->AddResourcePath("app.html", IDR_BOOKMARKS_APP_HTML); source->AddResourcePath("app.html", IDR_BOOKMARKS_APP_HTML);
source->AddResourcePath("app.js", IDR_BOOKMARKS_APP_JS); source->AddResourcePath("app.js", IDR_BOOKMARKS_APP_JS);
source->AddResourcePath("browser_proxy.html",
IDR_BOOKMARKS_BROWSER_PROXY_HTML);
source->AddResourcePath("browser_proxy.js", IDR_BOOKMARKS_BROWSER_PROXY_JS);
source->AddResourcePath("command_manager.html", source->AddResourcePath("command_manager.html",
IDR_BOOKMARKS_COMMAND_MANAGER_HTML); IDR_BOOKMARKS_COMMAND_MANAGER_HTML);
source->AddResourcePath("command_manager.js", source->AddResourcePath("command_manager.js",
......
...@@ -6,70 +6,71 @@ ...@@ -6,70 +6,71 @@
* @fileoverview Test suite for the bookmarks page. * @fileoverview Test suite for the bookmarks page.
*/ */
GEN_INCLUDE(['//chrome/test/data/webui/polymer_browser_test_base.js']); GEN_INCLUDE(['//chrome/test/data/webui/polymer_browser_test_base.js']);
GEN('#include "chrome/browser/prefs/incognito_mode_prefs.h"');
GEN('#include "chrome/browser/ui/webui/bookmarks/bookmarks_browsertest.h"'); GEN('#include "chrome/browser/ui/webui/bookmarks/bookmarks_browsertest.h"');
function BookmarksBrowserTest() {} const BookmarksBrowserTest = class extends PolymerTest {
/** @override */
BookmarksBrowserTest.prototype = { get browsePreload() {
__proto__: PolymerTest.prototype, return 'chrome://bookmarks';
}
browsePreload: 'chrome://bookmarks',
typedefCppFixture: 'BookmarksBrowserTest', /** @override */
get typedefCppFixture() {
return 'BookmarksBrowserTest';
}
extraLibraries: [ /** @override */
...PolymerTest.prototype.extraLibraries, get extraLibraries() {
return [
...super.extraLibraries,
'../test_store.js', '../test_store.js',
'test_command_manager.js', 'test_command_manager.js',
'test_store.js', 'test_store.js',
'test_timer_proxy.js', 'test_timer_proxy.js',
'test_util.js', 'test_util.js',
], ];
}
/** override */
runAccessibilityChecks: true,
}; };
function BookmarksActionsTest() {} // eslint-disable-next-line no-var
var BookmarksActionsTest = class extends BookmarksBrowserTest {
BookmarksActionsTest.prototype = { /** @override */
__proto__: BookmarksBrowserTest.prototype, get extraLibraries() {
return super.extraLibraries.concat([
extraLibraries: BookmarksBrowserTest.prototype.extraLibraries.concat([
'actions_test.js', 'actions_test.js',
]), ]);
}
}; };
TEST_F('BookmarksActionsTest', 'All', function() { TEST_F('BookmarksActionsTest', 'All', function() {
mocha.run(); mocha.run();
}); });
function BookmarksAppTest() {} // eslint-disable-next-line no-var
var BookmarksAppTest = class extends BookmarksBrowserTest {
BookmarksAppTest.prototype = { /** @override */
__proto__: BookmarksBrowserTest.prototype, get extraLibraries() {
return super.extraLibraries.concat([
extraLibraries: BookmarksBrowserTest.prototype.extraLibraries.concat([
'../test_util.js', '../test_util.js',
'app_test.js', 'app_test.js',
'//ui/webui/resources/js/util.js', '//ui/webui/resources/js/util.js',
]), ]);
}
}; };
TEST_F('BookmarksAppTest', 'All', function() { TEST_F('BookmarksAppTest', 'All', function() {
mocha.run(); mocha.run();
}); });
function BookmarksCommandManagerTest() {} // eslint-disable-next-line no-var
var BookmarksCommandManagerTest = class extends BookmarksBrowserTest {
BookmarksCommandManagerTest.prototype = { /** @override */
__proto__: BookmarksBrowserTest.prototype, get extraLibraries() {
return super.extraLibraries.concat([
extraLibraries: BookmarksBrowserTest.prototype.extraLibraries.concat([
'../test_util.js', '../test_util.js',
'command_manager_test.js', 'command_manager_test.js',
]), ]);
}
}; };
// https://crbug.com/1010381: Flaky. // https://crbug.com/1010381: Flaky.
...@@ -77,14 +78,14 @@ TEST_F('BookmarksCommandManagerTest', 'DISABLED_AllBCM', function() { ...@@ -77,14 +78,14 @@ TEST_F('BookmarksCommandManagerTest', 'DISABLED_AllBCM', function() {
mocha.run(); mocha.run();
}); });
function BookmarksDNDManagerTest() {} // eslint-disable-next-line no-var
var BookmarksDNDManagerTest = class extends BookmarksBrowserTest {
BookmarksDNDManagerTest.prototype = { /** @override */
__proto__: BookmarksBrowserTest.prototype, get extraLibraries() {
return super.extraLibraries.concat([
extraLibraries: BookmarksBrowserTest.prototype.extraLibraries.concat([
'dnd_manager_test.js', 'dnd_manager_test.js',
]), ]);
}
}; };
// http://crbug.com/803570 : Flaky on Win 7 (dbg) // http://crbug.com/803570 : Flaky on Win 7 (dbg)
...@@ -98,163 +99,162 @@ TEST_F('BookmarksDNDManagerTest', 'MAYBE_All', function() { ...@@ -98,163 +99,162 @@ TEST_F('BookmarksDNDManagerTest', 'MAYBE_All', function() {
mocha.run(); mocha.run();
}); });
function BookmarksEditDialogTest() {} // eslint-disable-next-line no-var
var BookmarksEditDialogTest = class extends BookmarksBrowserTest {
BookmarksEditDialogTest.prototype = { /** @override */
__proto__: BookmarksBrowserTest.prototype, get extraLibraries() {
return super.extraLibraries.concat([
extraLibraries: BookmarksBrowserTest.prototype.extraLibraries.concat([
'edit_dialog_test.js', 'edit_dialog_test.js',
]), ]);
}
}; };
TEST_F('BookmarksEditDialogTest', 'All', function() { TEST_F('BookmarksEditDialogTest', 'All', function() {
mocha.run(); mocha.run();
}); });
function BookmarksItemTest() {} // eslint-disable-next-line no-var
var BookmarksItemTest = class extends BookmarksBrowserTest {
BookmarksItemTest.prototype = { /** @override */
__proto__: BookmarksBrowserTest.prototype, get extraLibraries() {
return super.extraLibraries.concat([
extraLibraries: BookmarksBrowserTest.prototype.extraLibraries.concat([
'item_test.js', 'item_test.js',
]), ]);
}
}; };
TEST_F('BookmarksItemTest', 'All', function() { TEST_F('BookmarksItemTest', 'All', function() {
mocha.run(); mocha.run();
}); });
function BookmarksListTest() {} // eslint-disable-next-line no-var
var BookmarksListTest = class extends BookmarksBrowserTest {
BookmarksListTest.prototype = { /** @override */
__proto__: BookmarksBrowserTest.prototype, get extraLibraries() {
return super.extraLibraries.concat([
extraLibraries: BookmarksBrowserTest.prototype.extraLibraries.concat([
'../test_util.js', '../test_util.js',
'list_test.js', 'list_test.js',
]), ]);
}
}; };
TEST_F('BookmarksListTest', 'All', function() { TEST_F('BookmarksListTest', 'All', function() {
mocha.run(); mocha.run();
}); });
function BookmarksReducersTest() {} // eslint-disable-next-line no-var
var BookmarksReducersTest = class extends BookmarksBrowserTest {
BookmarksReducersTest.prototype = { /** @override */
__proto__: BookmarksBrowserTest.prototype, get extraLibraries() {
return super.extraLibraries.concat([
extraLibraries: BookmarksBrowserTest.prototype.extraLibraries.concat([
'reducers_test.js', 'reducers_test.js',
]), ]);
}
}; };
TEST_F('BookmarksReducersTest', 'All', function() { TEST_F('BookmarksReducersTest', 'All', function() {
mocha.run(); mocha.run();
}); });
function BookmarksRouterTest() {} // eslint-disable-next-line no-var
var BookmarksRouterTest = class extends BookmarksBrowserTest {
BookmarksRouterTest.prototype = { /** @override */
__proto__: BookmarksBrowserTest.prototype, get extraLibraries() {
return super.extraLibraries.concat([
extraLibraries: BookmarksBrowserTest.prototype.extraLibraries.concat([
'../test_util.js', '../test_util.js',
'router_test.js', 'router_test.js',
]), ]);
}
}; };
TEST_F('BookmarksRouterTest', 'All', function() { TEST_F('BookmarksRouterTest', 'All', function() {
mocha.run(); mocha.run();
}); });
function BookmarksFolderNodeTest() {} // eslint-disable-next-line no-var
var BookmarksFolderNodeTest = class extends BookmarksBrowserTest {
BookmarksFolderNodeTest.prototype = { /** @override */
__proto__: BookmarksBrowserTest.prototype, get extraLibraries() {
return super.extraLibraries.concat([
extraLibraries: BookmarksBrowserTest.prototype.extraLibraries.concat([
'folder_node_test.js', 'folder_node_test.js',
]), ]);
}
}; };
TEST_F('BookmarksFolderNodeTest', 'All', function() { TEST_F('BookmarksFolderNodeTest', 'All', function() {
mocha.run(); mocha.run();
}); });
function BookmarksPolicyTest() {} // eslint-disable-next-line no-var
var BookmarksPolicyTest = class extends BookmarksBrowserTest {
BookmarksPolicyTest.prototype = { /** @override */
__proto__: BookmarksBrowserTest.prototype, get extraLibraries() {
return super.extraLibraries.concat([
testGenPreamble: function() { '../test_browser_proxy.js',
GEN('SetIncognitoAvailability(IncognitoModePrefs::DISABLED);'); 'test_browser_proxy.js',
GEN('SetCanEditBookmarks(false);');
},
extraLibraries: BookmarksBrowserTest.prototype.extraLibraries.concat([
'policy_test.js', 'policy_test.js',
]), '//ui/webui/resources/js/cr.js',
]);
}
}; };
TEST_F('BookmarksPolicyTest', 'All', function() { TEST_F('BookmarksPolicyTest', 'All', function() {
mocha.run(); mocha.run();
}); });
function BookmarksStoreTest() {} // eslint-disable-next-line no-var
var BookmarksStoreTest = class extends BookmarksBrowserTest {
BookmarksStoreTest.prototype = { /** @override */
__proto__: BookmarksBrowserTest.prototype, get extraLibraries() {
return super.extraLibraries.concat([
extraLibraries: BookmarksBrowserTest.prototype.extraLibraries.concat([
'store_test.js', 'store_test.js',
]), ]);
}
}; };
TEST_F('BookmarksStoreTest', 'All', function() { TEST_F('BookmarksStoreTest', 'All', function() {
mocha.run(); mocha.run();
}); });
function BookmarksToolbarTest() {} // eslint-disable-next-line no-var
var BookmarksToolbarTest = class extends BookmarksBrowserTest {
BookmarksToolbarTest.prototype = { /** @override */
__proto__: BookmarksBrowserTest.prototype, get extraLibraries() {
return super.extraLibraries.concat([
extraLibraries: BookmarksBrowserTest.prototype.extraLibraries.concat([
'toolbar_test.js', 'toolbar_test.js',
]), ]);
}
}; };
TEST_F('BookmarksToolbarTest', 'All', function() { TEST_F('BookmarksToolbarTest', 'All', function() {
mocha.run(); mocha.run();
}); });
function BookmarksUtilTest() {} // eslint-disable-next-line no-var
var BookmarksUtilTest = class extends BookmarksBrowserTest {
BookmarksUtilTest.prototype = { /** @override */
__proto__: BookmarksBrowserTest.prototype, get extraLibraries() {
return super.extraLibraries.concat([
extraLibraries: BookmarksBrowserTest.prototype.extraLibraries.concat([
'util_test.js', 'util_test.js',
]), ]);
}
}; };
TEST_F('BookmarksUtilTest', 'All', function() { TEST_F('BookmarksUtilTest', 'All', function() {
mocha.run(); mocha.run();
}); });
function BookmarksExtensionAPITest() {} // eslint-disable-next-line no-var
var BookmarksExtensionAPITest = class extends BookmarksBrowserTest {
BookmarksExtensionAPITest.prototype = { /** @override */
__proto__: BookmarksBrowserTest.prototype, get extraLibraries() {
return super.extraLibraries.concat([
extraLibraries: BookmarksBrowserTest.prototype.extraLibraries.concat([
'extension_api_test.js', 'extension_api_test.js',
]), ]);
}
testGenPreamble: () => { /** @override */
testGenPreamble() {
GEN('SetupExtensionAPITest();'); GEN('SetupExtensionAPITest();');
} }
}; };
...@@ -263,16 +263,17 @@ TEST_F('BookmarksExtensionAPITest', 'All', function() { ...@@ -263,16 +263,17 @@ TEST_F('BookmarksExtensionAPITest', 'All', function() {
mocha.run(); mocha.run();
}); });
function BookmarksExtensionAPIEditDisabledTest() {} // eslint-disable-next-line no-var
var BookmarksExtensionAPIEditDisabledTest = class extends BookmarksBrowserTest {
BookmarksExtensionAPIEditDisabledTest.prototype = { /** @override */
__proto__: BookmarksBrowserTest.prototype, get extraLibraries() {
return super.extraLibraries.concat([
extraLibraries: BookmarksBrowserTest.prototype.extraLibraries.concat([
'extension_api_test_edit_disabled.js', 'extension_api_test_edit_disabled.js',
]), ]);
}
testGenPreamble: () => { /** @override */
testGenPreamble() {
GEN('SetupExtensionAPIEditDisabledTest();'); GEN('SetupExtensionAPIEditDisabledTest();');
} }
}; };
......
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
suite('Bookmarks policies', function() { suite('Bookmarks policies', function() {
let store; let store;
let app; let app;
/** @type {?bookmarks.BrowserProxy} */
let testBrowserProxy;
setup(function() { setup(function() {
const nodes = testTree(createFolder('1', [ const nodes = testTree(createFolder('1', [
...@@ -20,6 +22,8 @@ suite('Bookmarks policies', function() { ...@@ -20,6 +22,8 @@ suite('Bookmarks policies', function() {
store.expectAction('set-can-edit'); store.expectAction('set-can-edit');
store.replaceSingleton(); store.replaceSingleton();
testBrowserProxy = new bookmarks.TestBookmarksBrowserProxy();
bookmarks.BrowserProxy.instance_ = testBrowserProxy;
app = document.createElement('bookmarks-app'); app = document.createElement('bookmarks-app');
replaceBody(app); replaceBody(app);
}); });
...@@ -28,13 +32,18 @@ suite('Bookmarks policies', function() { ...@@ -28,13 +32,18 @@ suite('Bookmarks policies', function() {
const commandManager = bookmarks.CommandManager.getInstance(); const commandManager = bookmarks.CommandManager.getInstance();
// Incognito is disabled during testGenPreamble(). Wait for the front-end to // Incognito is disabled during testGenPreamble(). Wait for the front-end to
// load the config. // load the config.
const action = await store.waitForAction('set-incognito-availability'); const whenIncognitoSet = await Promise.all([
testBrowserProxy.whenCalled('getIncognitoAvailability'),
store.waitForAction('set-incognito-availability')
]);
assertEquals( assertEquals(
IncognitoAvailability.DISABLED, store.data.prefs.incognitoAvailability); IncognitoAvailability.DISABLED, store.data.prefs.incognitoAvailability);
assertFalse( assertFalse(
commandManager.canExecute(Command.OPEN_INCOGNITO, new Set(['11']))); commandManager.canExecute(Command.OPEN_INCOGNITO, new Set(['11'])));
await cr.sendWithPromise('testSetIncognito', IncognitoAvailability.ENABLED); cr.webUIListenerCallback(
'incognito-availability-changed', IncognitoAvailability.ENABLED);
assertEquals( assertEquals(
IncognitoAvailability.ENABLED, store.data.prefs.incognitoAvailability); IncognitoAvailability.ENABLED, store.data.prefs.incognitoAvailability);
assertTrue( assertTrue(
...@@ -43,11 +52,14 @@ suite('Bookmarks policies', function() { ...@@ -43,11 +52,14 @@ suite('Bookmarks policies', function() {
test('canEdit updates when changed', async function() { test('canEdit updates when changed', async function() {
const commandManager = bookmarks.CommandManager.getInstance(); const commandManager = bookmarks.CommandManager.getInstance();
const action = await store.waitForAction('set-can-edit'); const whenCanEditSet = await Promise.all([
testBrowserProxy.whenCalled('getCanEditBookmarks'),
store.waitForAction('set-can-edit')
]);
assertFalse(store.data.prefs.canEdit); assertFalse(store.data.prefs.canEdit);
assertFalse(commandManager.canExecute(Command.DELETE, new Set(['11']))); assertFalse(commandManager.canExecute(Command.DELETE, new Set(['11'])));
await cr.sendWithPromise('testSetCanEdit', true); cr.webUIListenerCallback('can-edit-bookmarks-changed', true);
assertTrue(store.data.prefs.canEdit); assertTrue(store.data.prefs.canEdit);
assertTrue(commandManager.canExecute(Command.DELETE, new Set(['11']))); assertTrue(commandManager.canExecute(Command.DELETE, new Set(['11'])));
}); });
......
// Copyright 2019 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.
cr.define('bookmarks', function() {
/**
* Test version of the bookmarks browser proxy.
*/
class TestBookmarksBrowserProxy extends TestBrowserProxy {
constructor() {
super(['getIncognitoAvailability', 'getCanEditBookmarks']);
}
getIncognitoAvailability() {
this.methodCalled('getIncognitoAvailability');
return Promise.resolve(IncognitoAvailability.DISABLED);
}
getCanEditBookmarks() {
this.methodCalled('getCanEditBookmarks');
return Promise.resolve(false);
}
getPluralString(messageName, itemCount) {
return Promise.resolve('test');
}
recordInHistogram(histogram, bucket, maxBucket) {}
}
return {
TestBookmarksBrowserProxy: TestBookmarksBrowserProxy,
};
});
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment