Assets 2

New Additions

  • Move activeModuleManager.get() getDefault parameter to a global function.
  • Added function goog.html.SafeUrl.fromSmsUrl to generate 'sms:' urls in a fashion similar to 'tel:' urls.
  • Add isSafeInteger public API to goog.math.Long
  • Added status codes from RFC 4918 to the HttpStatus enum

Backwards Incompatible Changes

  • Make Long.isSafeInteger behave like Number.isSafeInteger
  • AbstractModuleManager no longer extends Disposable.
  • Removed CRLF from Drag and drop base64.

Other Changes

  • Shorter implementation of getLowBitsUnsigned.
  • Add a $waitAndVerify() function to MockInterface and a $waitAndVerifyAll() function to MockControl that returns a goog.Promise that resolves when expectations have been registered.
  • Include RTL ranges in both the Basic Multilingual Plane (BMP) and Supplementary Planes of Unicode
  • Fixing a typo in a comment
  • AutoComplete: Fix type annotation for object parameter.
  • afterLoadModuleCode() is now a no-op, pending removal.
  • simplify long multiplication
  • Initialize TWO_PWR_63_DBL_ with exact value as jscompiler doesn't fold constants where precision might be lost.
  • Add getters for minimum and maximum number of fraction digits.
  • Optimize Long.toString
  • Rearrange 'if'-statements in Long.div to minimize number of executed checks.
  • goog.html.SAFE_URL_PATTERN_ is publicly available through goog.html.SafeUrl.SAFE_URL_PATTERN
  • Fix bug with quoted elements in csv parser
  • Fix bug in loading ES6 modules on firefox.
  • improve Long.fromNumber performance.
  • Use bit shift operation instead of mask in isSafeInteger method.
Assets 2

New Additions

  • goog.dom.safe.setAudioSrc
  • Added function goog.html.SafeUrl.fromSipUrl to generate 'sip:'/'sips:' urls in a fashion similar to 'tel:' urls.
  • Adds a touch-oriented drop-in for pointer events.

Other Changes

  • Fix bug in goog.labs.mock - record self-interactions in spied objects.
  • Update goog.labs.testing matchers to use exportSymbol rather than exporting directly into the global namespace.
  • Fix type of the interface of goog.net.WebChannel to avoid compilation errors.
  • Tightened some types.
  • Improve performance of compare operations on Math.Long
  • Allow calc() and functions used by grid-* CSS properties in SafeStyle.create.
  • In IE, soy templates clear an element's content before setting innerHTML to avoid recursive parent/child disconnecting behavior in IE.
  • Clarified documentation of goog.Promise.prototype.thenCatch().
Assets 2

New Additions

  • Remove goog.require by path (was meant to be used to require ES6 modules). Add a new goog.module.declareNamespace for use within ES6 module to associate a Closure namespace with ES6 modules.
  • Add a new assertRejects function to goog.asserts that asserts that an IThenable rejects.
  • Added KaiOS type to goog.labs.userAgent.platform. Added goog.userAgent.KAIOS constant.
  • Propagate CSP nonce to scripts created via document.write().
  • Have Closure transpile to what the browser needs rather than always to ES3.
  • Added support for year of week in Date and DateTimeFormatter.
  • Add goog.testing.asserts.assertNullOrUnderfined for asserting that an expression can be either null or undefined.
  • Use setAttribute instead of IDL property. Firefox doesn't support nonce assignment via IDL yet.

Backwards Incompatible Changes

  • Throw if cloneWithParams is used on a URL with #.

Other Changes

  • i18n datetime constants are now marked @const
  • Use an integer uniqueId.
  • If a tearDown() method logs two JSUnit exceptions, then throws the first one, the test will no longer incorrectly pass.
  • rolling back to fix a gmail release blocker
  • Loosen the type signature of a few methods so the signature does not actually change with up coming compiler changes.
  • Adds a faster code path for goog.math.Long.toString for numbers fit 53 bits.
  • Make remove function have same argument types as set.
  • Allow additional types for "content" in testing/net/xhrio.js to match net/xhrio.js
  • Adds a faster code path for goog.math.Long.fromString for numbers fit 53 bits.
  • Add missing property types for goog.ui.Dialog.Event
  • Suppressing deprecation warnings from using goog.ui.Dialog.ButtonSet, which happens to rely on a deprecated Map implementation for now.
  • Update KeyHandler and ActionHandler to use keydown events as the source for KeyEvents when using Gecko, rather than keypress events. This was only necessary pre-Gecko 4. T...
  • Improve TestCase error stripping to match changes in Chrome reporting.
  • On IE load ES6 modules during load rather than after completion.
  • n/a. comment change only
  • Correct goog.testing.net.XhrIo to extend from goog.net.XhrIo.
  • Addresses an issue where goog.i18n.mime.encode() doesn't correctly encode Unicode characters outside Unicode's Basic Multilingual Plane.
  • Optimizes goog.math.Long#negate
  • KeyboardEvent.key now includes home, end, enter, and arrow keys.
  • Reduce size of DateIntervalFormat locale data.
  • Fix a bug in goog.Timer where there can be more than one pending timeouts.
  • Expose ModuleManager module info Object to subclasses.
  • Bug fix for datetimeformat.format milliseconds with dates before Unix epoch.
  • Don't use PointerAsMouseEventType for MOUSEOVER/MOUSEOUT events.
  • Update KeyHandler and ActionHandler to use keydown events as the source for KeyEvents when using Gecko, rather than keypress events. This was only necessary pre-Gecko 4. This brings the handling in line with other browsers and fixes https://github\.com/google/closure-library/issues/883\.
  • CLDR 33.1 locale data update.
  • Attempt to fill in the keyCode value for the events fired by goog.testing.events.fireNonAsciiKeySequence.
Assets 2

New Additions

  • goog.ui.ac.Renderer can now take an optional maxWidthProvider to specify the autocomplete dropdown max width (the existing widthProvider sets the min width).
  • goog.ui.ac.InputHandler exposes setter to override the replacement separator behavior (when a row gets selected, it checks whether row.toString() ends with a separator and if not, appends a default separator automatically).
  • Add support for ES6 modules in the debug loader.
  • Add support for manual CSP nonce propagation for safe scripts and module loading.

Backwards Incompatible Changes

  • IFRAME_POLLING Transport type in CrossPagechannel is now set by passing the constructor as the CfgFields.TRANSPORT option.
  • Rename TestCase.setCompletedCallback() to addCompletedCallback() and allow multiple callbacks.
  • the preserveParameterTypesCompatibilityFlag is being removed. Code setting this flag to true will need to change.

Other Changes

  • Ignore null in checkTypedStringEquality.
  • Report global errors as part of the test results.
  • Move goog.ui.Component#getMouseEventType to goog.ui.ComponentUtil.getMouseEventType.
  • Extend the tests of safehtmlformatter to showcase safe types compatibility
  • Improve performance of ModuleManager#getNotYetLoadedTransitiveDepIds
  • Report swallowed JSUnit exceptions even if the test failed with some other error.
  • Simplify keyboard shortcut handling logic for OS X Gecko, removing logic which was needed to circumvent a bug in Gecko 1.8 on OS X.
  • Support touch input in goog.ui.DimensionPicker. Added goog.ui.Component#setPointerEventsEnabled method to listen for pointer events instead of mouse events in goog.ui.Control and goog.ui.Container. Removed dependencies on mouse hover logic in goog.ui.DimensionPicker.
  • no-op to sliderbase class, will set manageFocus_ variable to false in sub class.
  • Allow matrix() in SafeStyle.create.
  • Improved type annotations on goog.i18n.DateTimePatterns.
  • Store the test result serializer function to avoid it being overwritten by a mock.
  • Remove json stringify from TestCase, only use one in TestRunner.
  • Add ar_EG to the main list of regional variants.
  • Don't log JSUnit exceptions twice.
  • CLDR 33 locale data update.
Assets 2

Special Note Closure Library was broken on 20180402 and 20180319, which is when there were compiler releases. Thus there is no Closure 20180402 or 20180319. To make up for it we're doing a release with the 20180402 transpiler today (20180405), so there will not be a 20180405 compiler release either. Sorry for any confusion!

New Additions

  • goog.ui.ac.Renderer can now take an optional maxWidthProvider to specify the autocomplete dropdown max width (the existing widthProvider sets the min width).
  • Support goog.userAgent.getNavigatorTyped
  • Add a new goog.bootstrap method for use when loading code through Closure. This method should now be used in place where goog.require was used to bootstrap. As we add ES6 module support bootstrap goog.requires will no longer have the same guarantees they used to. This method is a safe way to determine when the debug loaded application has finished loading.

Backwards Incompatible Changes

  • Delete goog.json.EvalJsonProcessor
  • The "callWithoutLogging" function from goog.testing.asserts has been removed.
  • When TestCase is constructed with setObject (e.g. via testSuite), global object is no longer automatically inspected for test methods.

Other Changes

  • support complete 0-RTT handshake with WebChannel.fastHandshake option.
  • Throw if testSuite() is called twice.
  • Document that assertSameElements uses strict equality
  • Adding an optional timeout to goog.net.tmpnetwork.testGoogleCom.
  • introduced a new WebChannelOption - requestRefreshingThresholds. To be implemented.
  • introduced a new WebChannel options (Options.InternalChannelParams)
  • goog.crypt.byteArrayToHex now accepts an optional separator.
  • Use the latest version of the parse5 node module in generate_closure_unit_tests
  • goog.events.EventType is updated with devicechange event.
  • Improve inter-operability between goog.Promise and $jscomp.PolyfillPromise
  • Document that MockRandom modifies the provided sequence array.
  • fix the goog.dom.safe.setButtonFormAction and goog.dom.safe.setInputFormAction
  • goog.testing.testSuite now takes an optional options parameter with an order attribute that can be used to set the order in which tests are run.
  • Support number formats with symbols that are not from the binary's locale.
  • Regenerate javascript/closure/i18n/charpickerdata.js.
  • Reworked the Closure Debug Loader to allow for clarity and ES6 module support (latter is behind a flag while in development).
  • Fix bug in SliderBase's drag handling while in RTL mode to correctly calculate the new slider value.
  • RespondingChannel can now wait for asynchronous services before sending responses to cross-channel messages.
  • Add integration tests for the debug loader using goog.require.
  • Export the logicmatcher's convenience functions via goog.provide.
  • Introduced a new WebChannel options (Options.xmlHttpFactory)
  • TestCase: Call doError() only with the completed TestCase.Test. Add a new recordError() function to report an error that comes from or is related to a test. This way, the test completion callback will always be called exactly once, even if a single test has multiple related errors (eg, from the test and from tearDown).
Assets 2

New Additions

  • Add a fromConstantAndArgs() method to goog.html.SafeScript.
  • Adding 'video/quicktime' as an allowed type to goog.html.SafeUrl.fromBlob(...) and goog.html.SafeUrl.fromDataURL(...)
  • Added Chromecast OS type to goog.labs.userAgent.platform.
  • Added extra check in Disposable.dispose() that, when Disposable.MonitoringMode is on, ensures that all disposables that have been registered to an object (via object.registerDisposable) have been disposed of and that all callbacks (added via object.addOnDisposeCallback) have been called.

Backwards Incompatible Changes

  • Backwards compatible change.
  • Remove now unused goog.date.fromIsoString() in favor of goog.date.DateTime.fromIsoString().
  • goog.html.TrustedResourceUrl.format now disallows the format string starting with "about:blank".

Other Changes

  • Fix FetchXmlHttp to not crash when reading headers that haven't been received.
  • Deprecate old date formatting methods that don't use CLDR data
  • Adding nullability annotations
  • CLDR 32 locale data update.
  • goog.async.Deferred.fromPromise() now accepts all Thenable types.
  • Custom Module Managers can now be specified with goog.loader.activeModuleManager.set()
  • Removed goog.labs.structs.Map. We recommend the JavaScript Map class instead: https://developer\.mozilla\.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/Map
  • Fixed a typo in the comments that the linter flagged. "Overridden" was misspelled.
  • Applicable goog.module.ModuleManager methods now enforce on-nullability.
  • Added util function for detecting string is html or not.
  • goog.labs.structs.Multimap now accepts any type of key, not just a string. This is accomplished using the ES6 Map class, which means Multimap cannot be used on IE8 and below, and will require ES6-to-ES5 transpilation for some browsers.
  • remove the newly introduced WebChannel FailureRecovery option (to be implemented later).
  • Add test utils that allows function to return value after throw.
  • Better documentation for the DateFormat creation
  • No-op re-implementation of goog.structs.Map.addAll.
  • Work around bug Chrome that causes referrer to be retained when using goog.window.open() with the 'noreferrer' option.
  • Change in the way goog.module() files are represented in deps.js files. See https://github\.com/google/closure-compiler/issues/2786 for details
  • fixing a bug to avoid starting traces with the ids of the outstanding traces also adding an optional parameter to the stop callback function.
  • moving StopTraceDetail definition to goog.debug to avoid JS compiler NTI problems.
  • a new WebChannel option to support custom Failure-Recovery algorithms for back-channels. API spec only.
Assets 2

New Additions

  • Provide safe API for module loading.
  • Add new HTML5.1 tags to goog.dom.TagName.
  • Add goog.date.Date.fromIsoString() and goog.date.DateTime.fromIsoString() for control over the return type.
  • Add goog.dom.safe.setVideoSrc
  • Changed zippy and animatedzippy to allow role override for improved accessibility.
  • Implement a simple delegate system.

Backwards Incompatible Changes

  • Add protected getThumbCssClass method to goog.ui.Slider.
  • Disallow passing string or goog.Uri to Jsonp.
  • Delete deprecated API for module loading.
  • Fix bug in SliderBase's drag handling while in RTL mode to correctly calculate the new slider value.
  • Delete deprecated goog.editor.Field#setHtml.
  • Change all non-mutating functions in goog.array to accept IArrayLike instead of Array.
  • Delete goog.html.testing.testTypedStringEquality.

Other Changes

  • Remove the goog.string dependency from goog.asserts.
  • new WebChannelOptions.clientProfile to support custom configs, e.g. for mobile/cellular clients.
  • Updated some goog.testing.PropertyReplacer examples to use replace instead of set, and pointed out the possible need for goog.reflect.objectProperty.
  • WebChannel supports dynamic timeout config for back-channel requests. This is a backward compatible change.
  • Fixed a bug to avoid starting traces with the same id.
  • Use standard 'focusin' and 'focusout' events.
  • Remove the delay between onload and test initialization.
  • Fixed a bug in goog.vec.Quaternion.fromRotationMatrix4.
Assets 2

New Additions

  • goog.dom.asserts.assertIsHTML(Form|Input|Button)Element
  • Allow importing test assertions.
  • Adds the assertion 'assertFinite' to goog.asserts.
  • added goog.soy.Renderer#getDom (protected method).
  • Add a new createTest method that can be used instead of createTestFromAutoDiscoveredFunction
  • Added goog.math.Vec2.rescaled() and goog.math.Vec3.rescaled() static functions.
  • Add TrustedResourceUrl#cloneWithParams.
  • Add callback support to goog.debug.Trace for its following functions: startTrace, stopTrace, and addComment
  • Make goog.events.* support MediaQueryList (from window.matchMedia).
  • Add goog.html.testing.checkTypedStringEquality.
  • Introduced a module to calculate specificity of CSS selectors.
  • goog.dom.safe.replaceLocation, goog.dom.safe.setFormElementAction, setInputFormAction, setButtonFormAction

Backwards Incompatible Changes

  • Store goog.editor.Field#cssStyles as SafeStyleSheet.
  • Removal of goog.labs.promise.run.
  • Pass testSource instead of goog.global.
  • changes how the HTML sanitizer inlines style rules.
  • Add support in the HTML and CSSSanitizer for inlining style rules found in style tags into style attributes.
  • By default, restrict the effect of sanitized STYLE tags to the current HtmlSanitizer.sanitize call.
  • Remove createTestFromAutoDiscoveredFunction now that createTest exists.
  • Delete unused inheritBlendedCSS.
  • Added support for allowing STYLE tags in the HtmlSanitizer.
  • removed unused API

Other Changes

  • Fix file:// protocol loading.
  • new WebChannel disableRedact option.
  • decodeStringToUint8Array returns a Uint8Array with a buffer with a more accurate size.
  • specified client-initiated half-close as a public API (to be implemented).
  • WebChannel: 1) new messageContentType option; 2) send() now takes raw strings.
  • Fix bug with nested testSuites rerun on the same page.
  • goog.debug.Logger no longer logs to an attached profiler log by default.
  • Introduces a workaround for window.open(..., 'noopener') which will cause the the URL to open in a new browser window with no bookmark bar or ability to add tabs. This is a known issue tracked here: https://github\.com/whatwg/html/issues/1902
  • Removed all instance of goog.log.info from the Closure's combobox component. This was the last ui component to still use goog.log.info in uncompiled code.
  • make webchannel close() work from react-native, which doesn't support sendBeacon or Image.
  • Make ObjectSerializer support camelCase in addition to underscore_delimited field names for serialized JSON.
  • add metadata dispatching support for WebChannel. See goog.net.WebChannel.MessageEvent.prototype.metadataKey
  • bug fix - stop IE from logging profile output to console.
  • Tighten the return type of installSafeStyleSheet().
  • Improve error message when a testing assertion method gets an incorrect number of arguments.
  • Make goog.debug.catchErrors() and goog.debug.ErrorReporter() play more nicely.
  • Update TRY currency symbol.
  • new WebChannel disableRedact option
  • Add a 1/2 second delay to allow the inappropriate synchronous test to work even though it should be async.
  • Add the new Belarusian ruble (BYN) to the tier 2 Closure currencies.
  • Provide safe API for Jsonp.
  • Annotates a callsite where the argument can never be null
  • DateTime.toUTCRfc3339String() will properly print milliseconds, padded with zeroes.
  • Improve accessibility for DatePicker widget:
  • Fix goog.globalEval in the event it runs in CSP compliant contexts.
  • Allow tests to be objects in addition to functions. This allows users to add additional setup and teardown methods.
Assets 2

New Additions

  • Support arrays in goog.html.TrustedResourceUrl.formatWithParams.
  • Whitelist additional ARIA attributes in the HtmlSanitizer.
  • Added binaryType support to goog.net.WebSocket.
  • goog.dom.uri.normalizeUri which uses a DOM anchor element to normalize a URI.
  • Add goog.debug.freeze() which freezes its argument, but only in debug mode.
  • Add basic support for pointer event types.
  • Add toTrustedResourceUrl to Soy.

Backwards Incompatible Changes

  • goog.dom.dataset now only accepts valid dataset property names.
  • Re-add goog.dom.uri.normalizeUri.
  • Delete deprecated goog.json.unsafeParse. Use JSON.parse instead.
  • Delete deprecated goog.net.jsloader.load. Use .safeLoad instead, take 2.
  • Delete deprecated goog.style.setStyles. Use setSafeStyleSheet.
  • goog.object.getValueByKeys is now null-safe, returning undefined when it encounters a null along the path, whereas previously it would throw a TypeError exception. If the final value is null, the function will continue to return null.
  • Use https in media URLs.
  • Allow text/csv in data: SafeUrls.
  • Require TrustedResourceUrl in goog.editor.Field#makeEditable.
  • Deleted string HTML versions of goog.ui.editor.messages messages. Use SafeHtml getters instead.
  • Delete deprecated goog.style.installStyles. Use installSafeStyleSheet instead.

Other Changes

  • Fixed a bug in goog.getObjectByName where invalid paths could return incorrect values.
  • Cleaning up files to suppress closure warnings.
  • Make it clear that tickPromise does not work with native browser promises.
  • Rolling back API.
  • Fixed negative numbers being prefixed with unlocalized minus sign.
  • Clarify the webchannel 0-RTT send() behavior.
  • Add Unicode 10 support to goog.i18n.GraphemeBreak.
  • Allows compiler to enforce that only constructors implementing the goog.events.Listenable interface be marked as implementing said interface.
  • Make SafeHtmlFormatter work with DETECT_DOUBLE_ESCAPING.
  • Report correct value for goog.events.BrowserFeature.TOUCH_ENABLED in Microsoft Edge 15 browser.
  • new API: goog.net.WebChannel.RuntimeProperties.getPendingRequestCount()
  • Fixed goog.style.bidi.setScrollLeft for Safari 10 and later.
  • Fixes issue where fullscreenchange events weren't being captured in Edge because the string for the event was 'fullscreenchange' when it should be 'webkitfullscreenchange'
  • Add convenience method to goog.debug that allows for adding context to an error object and simultaneously converting the object to an Error.
  • fixed the WebChannel message delivery latency from chrome/firefox background tabs.
  • Allow goog.json.hybrid.parse('null').
  • Deprecate goog.json.parse. Use JSON.parse.
Assets 2

New Additions

  • More audio MIME types supported in data: and blob: URLs created with SafeUrl functions: 3gpp, 3gpp2, mp4, and mpeg.
  • Add goog.debug.errorcontext to support adding arbitrary context key-value pairs to errors. The context is reported in the closure error reporter.
  • Expose the key or mouse event that triggered a Zippy ACTION.
  • Add colindex and rowindex to goog.a11y.aria.Attributes. aria-colindex and aria-rowindex are two properties in aria 1.1 which define and element's position within a table, grid, or treegrid. See https://www\.w3\.org/TR/wai-aria-1\.1/\#aria-rowindex and https://www\.w3\.org/TR/wai-aria-1\.1/\#aria-rowindex for more information.
  • Added support for getAllKeys().
  • Added new median function, goog.testing.PerformanceTimer.median.
  • Support SafeUrl and array in SafeStyle.create.
  • audio/x-m4a in data: and blob: URLs created with SafeUrl functions.
  • Add goog.soy.data.SanitizedCss#toSafeStyleSheet.
  • Audio MIME types supported in data: and blob: URLs.
  • Add legacyconversions.safeScriptFromString.
  • Add goog.soy.data.SanitizedStyle.

Backwards Incompatible Changes

  • goog.debug.Logger no longer uses the long deprecated console.markTimeline()
  • Delete goog.net.jsloader.loadAndVerify. Use safeLoadAndVerify instead.
  • Delete goog.net.jsloader.loadMany (goog.net.jsloader.safeLoadMany is preferred).

Other Changes

  • fixed debug.Console to display INFO logs on Chrome 58+.
  • Initialize the test runner using the local, consistent variable.
  • Use switch-case instead of if-tree for i18n data
  • Fixed goog.style.bidi.getScrollLeft for IOS 10 and later.
  • goog.array.bucket's return type is now more specific.
  • Don't use document.write in unit tests; add the body tag statically.
  • Use goog.json.hybrid.parse in XhrIo.
  • goog.dom.forms supports meter and progress elements.
  • Fix multi-stroke keyboard shortcuts where consecutive strokes are the same firing too soon in Windows non-Firefox browsers.
  • doc-only change
  • Make goog.debug.RelativeTimeProvider a proper singleton so that it can be stripped by the compiler when unused.
  • Fixes Microsoft Edge 15 error "Unable to get property ‘handleEvent’ of undefined or null reference" in browserfeature.js
  • Abort XHR requests when cancelling goog.labs.net.xhr promises.
  • support WebChannelOptions.fastHandshake (enable QUIC 0-RTT).
  • Added jsdoc.