Index: chrome/browser/resources/print_preview/data/destination_match.js |
diff --git a/chrome/browser/resources/print_preview/data/destination_match.js b/chrome/browser/resources/print_preview/data/destination_match.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..11ef6797a5a8c8a6737c030fc7769bba8822f02a |
--- /dev/null |
+++ b/chrome/browser/resources/print_preview/data/destination_match.js |
@@ -0,0 +1,101 @@ |
+// Copyright (c) 2017 The Chromium Authors. All rights reserved. |
dpapad
2017/05/05 17:32:50
Nit (optional): The "(c)" part of the licenses is
rbpotter
2017/05/05 18:25:46
Done.
|
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+cr.define('print_preview', function() { |
+ 'use strict'; |
+ |
+ /** |
+ * A set of key parameters describing a destination used to determine |
+ * if two destinations are the same. |
+ * @param {!Array<!print_preview.DestinationOrigin>} origins Match |
+ * destinations from these origins. |
+ * @param {RegExp} idRegExp Match destination's id. |
+ * @param {RegExp} displayNameRegExp Match destination's displayName. |
+ * @param {boolean} skipVirtualDestinations Whether to ignore virtual |
+ * destinations, for example, Save as PDF. |
+ * @constructor |
+ */ |
+ function DestinationMatch( |
+ origins, idRegExp, displayNameRegExp, skipVirtualDestinations) { |
+ |
+ /** @private {!Array<!print_preview.DestinationOrigin>} */ |
+ this.origins_ = origins; |
+ |
+ /** @private {RegExp} */ |
+ this.idRegExp_ = idRegExp; |
+ |
+ /** @private {RegExp} */ |
+ this.displayNameRegExp_ = displayNameRegExp; |
+ |
+ /** @private {boolean} */ |
+ this.skipVirtualDestinations_ = skipVirtualDestinations; |
+ } |
+ |
+ DestinationMatch.prototype = { |
+ |
+ /** |
+ * @param {string} origin Origin to match. |
+ * @return {boolean} Whether the origin is one of the {@code origins_}. |
+ */ |
+ matchOrigin: function(origin) { |
+ return arrayContains(this.origins_, origin); |
+ }, |
+ |
+ /** |
+ * @param {string} id Id of the destination. |
+ * @param {string} origin Origin of the destination. |
+ * @return {boolean} Whether destination is the same as initial. |
+ */ |
+ matchIdAndOrigin: function(id, origin) { |
+ return this.matchOrigin(origin) && |
+ !!this.idRegExp_ && |
+ this.idRegExp_.test(id); |
+ }, |
+ |
+ /** |
+ * @param {!print_preview.Destination} destination Destination to match. |
+ * @return {boolean} Whether {@code destination} matches the last user |
+ * selected one. |
+ */ |
+ match: function(destination) { |
+ if (!this.matchOrigin(destination.origin)) { |
+ return false; |
+ } |
+ if (this.idRegExp_ && !this.idRegExp_.test(destination.id)) { |
+ return false; |
+ } |
+ if (this.displayNameRegExp_ && |
+ !this.displayNameRegExp_.test(destination.displayName)) { |
+ return false; |
+ } |
+ if (this.skipVirtualDestinations_ && |
+ this.isVirtualDestination_(destination)) { |
+ return false; |
+ } |
+ return true; |
+ }, |
+ |
+ /** |
+ * @param {!print_preview.Destination} destination Destination to check. |
+ * @return {boolean} Whether {@code destination} is virtual, in terms of |
+ * destination selection. |
+ * @private |
+ */ |
+ isVirtualDestination_: function(destination) { |
+ if (destination.origin == print_preview.DestinationOrigin.LOCAL) { |
+ return arrayContains( |
+ [print_preview.Destination.GooglePromotedId.SAVE_AS_PDF], |
+ destination.id); |
+ } |
+ return arrayContains( |
+ [print_preview.Destination.GooglePromotedId.DOCS], |
+ destination.id); |
+ } |
+ }; |
+ |
+ // Export |
+ return { |
+ DestinationMatch: DestinationMatch |
+ }; |
+}); |