Skip to content

Commit

Permalink
♻️ core: add getWin to core/window (#36295)
Browse files Browse the repository at this point in the history
* core: add getWin to core/window

* timeago doesnt need optional
  • Loading branch information
samouri committed Oct 11, 2021
1 parent e1acc2c commit 8d615b4
Show file tree
Hide file tree
Showing 46 changed files with 110 additions and 120 deletions.
4 changes: 2 additions & 2 deletions extensions/amp-a4a/0.1/within-viewport.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {Deferred} from '#core/data-structures/promise';
import {isIframed} from '#core/dom';
import {memo} from '#core/types/object';
import {toWin} from '#core/window';
import {getWin} from '#core/window';

import {getMode} from '../../../src/mode';

Expand All @@ -20,7 +20,7 @@ export function whenWithinViewport(element, viewportNum) {
return Promise.reject('!WITHIN_VIEWPORT_INOB');
}

const win = toWin(element.ownerDocument.defaultView);
const win = getWin(element);
const observersMap = memo(win, OBSERVERS_MAP_PROP, createObserversMap);

let observer = observersMap.get(viewportNum);
Expand Down
4 changes: 2 additions & 2 deletions extensions/amp-accordion/1.0/amp-accordion.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {ActionTrust} from '#core/constants/action-constants';
import {toWin} from '#core/window';
import {getWin} from '#core/window';

import {isExperimentOn} from '#experiments';

Expand Down Expand Up @@ -35,7 +35,7 @@ class AmpAccordion extends BaseElement {
/** @override */
triggerEvent(section, eventName, detail) {
const event = createCustomEvent(
toWin(section.ownerDocument.defaultView),
getWin(section),
`accordionSection.${eventName}`,
detail
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {computedStyle, getStyle, setStyle} from '#core/dom/style';
import {clamp} from '#core/math';
import {hasOwn} from '#core/types/object';
import {tryParseJson} from '#core/types/object/json';
import {toWin} from '#core/window';
import {getWin} from '#core/window';

import {randomlySelectUnsetExperiments} from '#experiments';

Expand Down Expand Up @@ -65,7 +65,7 @@ export class ResponsiveState {
this.isContainerWidth_ = !!isContainerWidth;

/** @private {!Window} */
this.win_ = toWin(element.ownerDocument.defaultView);
this.win_ = getWin(element);
}

/**
Expand Down Expand Up @@ -153,7 +153,7 @@ export class ResponsiveState {
* @return {!Promise<?ResponsiveState>} a promise that return container width responsive state.
*/
static convertToContainerWidth(element) {
const vsync = Services.vsyncFor(toWin(element.ownerDocument.defaultView));
const vsync = Services.vsyncFor(getWin(element));

return vsync
.runPromise(
Expand Down Expand Up @@ -201,7 +201,7 @@ export class ResponsiveState {
const savePromise = new Promise((resolve) => {
promiseResolver = resolve;
});
const win = toWin(element.ownerDocument.defaultView);
const win = getWin(element);

const listener = (event) => {
const data = getData(event);
Expand Down
4 changes: 2 additions & 2 deletions extensions/amp-ad/0.1/amp-ad-3p-impl.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ import {getIframe, preloadBootstrap} from '../../../src/3p-frame';
import {intersectionEntryToJson} from '#core/dom/layout/intersection';
import {moveLayoutRect} from '#core/dom/layout/rect';
import {observeIntersections} from '#core/dom/layout/viewport-observer';
import {toWin} from '#core/window';
import {getWin} from '#core/window';

/** @const {string} Tag name for 3P AD implementation. */
export const TAG_3P_IMPL = 'amp-ad-3p-impl';
Expand Down Expand Up @@ -396,7 +396,7 @@ export class AmpAd3PImpl extends AMP.BaseElement {

const intersection = this.element.getIntersectionChangeEntry();
const iframe = getIframe(
toWin(this.element.ownerDocument.defaultView),
getWin(this.element),
this.element,
this.type_,
opt_context,
Expand Down
4 changes: 2 additions & 2 deletions extensions/amp-analytics/0.1/analytics-group.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {Deferred} from '#core/data-structures/promise';
import {dev, userAssert} from '#utils/log';
import {getMode} from '../../../src/mode';
import {getTrackerKeyName, getTrackerTypesForParentType} from './events';
import {toWin} from '#core/window';
import {getWin} from '#core/window';

/**
* @const {number}
Expand Down Expand Up @@ -39,7 +39,7 @@ export class AnalyticsGroup {
this.triggerCount_ = 0;

/** @private @const {!Window} */
this.win_ = toWin(analyticsElement.ownerDocument.defaultView);
this.win_ = getWin(analyticsElement);
}

/** @override */
Expand Down
4 changes: 2 additions & 2 deletions extensions/amp-analytics/0.1/transport.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import {getTopWindow} from '../../../src/service-helpers';

import {loadPromise} from '#utils/event-helper';
import {removeElement} from '#core/dom';
import {toWin} from '#core/window';
import {getWin} from '#core/window';
import {toggle} from '#core/dom/style';

/** @const {string} */
Expand Down Expand Up @@ -154,7 +154,7 @@ export class Transport {
}

// In the case of FIE rendering, we should be using the parent doc win.
const topWin = getTopWindow(toWin(element.ownerDocument.defaultView));
const topWin = getTopWindow(getWin(element));
const type = element.getAttribute('type');
// In inabox there is no amp-ad element.
const ampAdResourceId = this.isInabox_
Expand Down
4 changes: 2 additions & 2 deletions extensions/amp-animation/0.1/parsers/keyframes-extractor.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {endsWith} from '#core/types/string';
import {toWin} from '#core/window';
import {getWin} from '#core/window';

/**
* Finds and extracts keyframes definition for Web Animations from CSS styles.
Expand All @@ -12,7 +12,7 @@ export function extractKeyframes(rootNode, name) {
if (!styleSheets) {
return null;
}
const win = toWin((rootNode.ownerDocument || rootNode).defaultView);
const win = getWin(rootNode);
// Go from the last to first since the last rule wins in CSS.
for (let i = styleSheets.length - 1; i >= 0; i--) {
const keyframes = scanStyle(
Expand Down
4 changes: 2 additions & 2 deletions extensions/amp-auto-ads/0.1/adsense-network-config.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {buildUrl} from '#ads/google/a4a/shared/url-builder';

import {dict} from '#core/types/object';
import {toWin} from '#core/window';
import {getWin} from '#core/window';

import {Services} from '#service';

Expand Down Expand Up @@ -34,7 +34,7 @@ export class AdSenseNetworkConfig {
getConfigUrl() {
const docInfo = Services.documentInfoForDoc(this.autoAmpAdsElement_);
const canonicalHostname = parseUrlDeprecated(docInfo.canonicalUrl).hostname;
const win = toWin(this.autoAmpAdsElement_.ownerDocument.defaultView);
const win = getWin(this.autoAmpAdsElement_);
return buildUrl(
'//pagead2.googlesyndication.com/getconfig/ama',
{
Expand Down
4 changes: 2 additions & 2 deletions extensions/amp-auto-ads/0.1/measure-page-layout-box.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {getPageLayoutBoxBlocking} from '#core/dom/layout/page-layout-box';
import {toWin} from '#core/window';
import {getWin} from '#core/window';

import {Services} from '.../../../src/service';

Expand All @@ -8,6 +8,6 @@ import {Services} from '.../../../src/service';
* @return {!Promise<!../layout-rect.LayoutRectDef>}
*/
export function measurePageLayoutBox(element) {
const vsync = Services.vsyncFor(toWin(element.ownerDocument.defaultView));
const vsync = Services.vsyncFor(getWin(element));
return vsync.measurePromise(() => getPageLayoutBoxBlocking(element));
}
4 changes: 2 additions & 2 deletions extensions/amp-base-carousel/1.0/amp-base-carousel.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {CSS} from '../../../build/amp-base-carousel-1.0.css';
import {Services} from '#service';
import {createCustomEvent} from '#utils/event-helper';
import {isExperimentOn} from '#experiments';
import {toWin} from '#core/window';
import {getWin} from '#core/window';
import {userAssert} from '#utils/log';

/** @const {string} */
Expand Down Expand Up @@ -41,7 +41,7 @@ class AmpBaseCarousel extends BaseElement {
/** @override */
triggerEvent(element, eventName, detail) {
const event = createCustomEvent(
toWin(element.ownerDocument.defaultView),
getWin(element),
`amp-base-carousel.${eventName}`,
detail
);
Expand Down
4 changes: 2 additions & 2 deletions extensions/amp-base-carousel/1.0/component.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {WithAmpContext} from '#preact/context';
import {forwardRef, toChildArray} from '#preact/compat';
import {isRTL} from '#core/dom';
import {sequentialIdGenerator} from '#core/data-structures/id-generator';
import {toWin} from '#core/window';
import {getWin} from '#core/window';
import {
cloneElement,
useCallback,
Expand Down Expand Up @@ -159,7 +159,7 @@ function BentoBaseCarouselWithRef(
if (!shouldAutoAdvance || !containRef.current) {
return;
}
const win = toWin(containRef.current.ownerDocument.defaultView);
const win = getWin(containRef.current);
const interval = win.setInterval(() => {
const autoAdvanced = autoAdvance();
if (!autoAdvanced) {
Expand Down
8 changes: 3 additions & 5 deletions extensions/amp-base-carousel/1.0/scroller.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {debounce} from '#core/types/function';
import {forwardRef} from '#preact/compat';
import {mod} from '#core/math';
import {setStyle} from '#core/dom/style';
import {toWin} from '#core/window';
import {getWin} from '#core/window';
import {
useCallback,
useImperativeHandle,
Expand Down Expand Up @@ -180,7 +180,7 @@ function ScrollerWithRef(
return;
}
// Use local window.
const win = toWin(node.ownerDocument.defaultView);
const win = getWin(node);
if (!win) {
return undefined;
}
Expand All @@ -192,9 +192,7 @@ function ScrollerWithRef(
// Trigger render by setting the resting index to the current scroll state.
const debouncedResetScrollReferencePoint = useMemo(() => {
// Use local window if possible.
const win = containerRef.current
? toWin(containerRef.current.ownerDocument.defaultView)
: window;
const win = containerRef.current ? getWin(containerRef.current) : window;
return debounce(
win,
() => {
Expand Down
4 changes: 2 additions & 2 deletions extensions/amp-fit-text/1.0/component.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as Preact from '#preact';
import {ContainWrapper} from '#preact/component';
import {LINE_HEIGHT_EM_, useStyles} from './component.jss';
import {px, resetStyles, setStyle, setStyles} from '#core/dom/style';
import {toWin} from '#core/window';
import {getWin} from '#core/window';
import {useCallback, useLayoutEffect, useRef} from '#preact';

/**
Expand Down Expand Up @@ -43,7 +43,7 @@ export function BentoFitText({
if (!container || !content) {
return;
}
const win = toWin(container.ownerDocument.defaultView);
const win = getWin(container);
if (!win) {
return undefined;
}
Expand Down
4 changes: 2 additions & 2 deletions extensions/amp-form/0.1/form-proxy.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {toWin} from '#core/window';
import {getWin} from '#core/window';

import {Services} from '#service';

Expand Down Expand Up @@ -32,7 +32,7 @@ export function setDenylistedPropertiesForTesting(properties) {
* @return {!Object}
*/
export function installFormProxy(form) {
const constr = getFormProxyConstr(toWin(form.ownerDocument.defaultView));
const constr = getFormProxyConstr(getWin(form));
const proxy = new constr(form);
if (!('action' in proxy)) {
setupLegacyProxy(form, proxy);
Expand Down
4 changes: 2 additions & 2 deletions extensions/amp-form/0.1/form-validators.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {iterateCursor} from '#core/dom';
import {toWin} from '#core/window';
import {getWin} from '#core/window';

import {Services} from '#service';

Expand Down Expand Up @@ -175,7 +175,7 @@ export class FormValidator {
const previousValidity = this.formValidity_;
this.formValidity_ = this.checkFormValidity(this.form);
if (previousValidity !== this.formValidity_) {
const win = toWin(this.form.ownerDocument.defaultView);
const win = getWin(this.form);
const type = this.formValidity_ ? FormEvents.VALID : FormEvents.INVALID;
const event = createCustomEvent(win, type, null, {bubbles: true});
this.form.dispatchEvent(event);
Expand Down
8 changes: 4 additions & 4 deletions extensions/amp-iframe/1.0/component.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as Preact from '#preact';
import {useCallback, useEffect, useMemo, useRef} from '#preact';
import {MessageType} from '#core/3p-frame-messaging';
import {toWin} from '#core/window';
import {getWin} from '#core/window';
import {ContainWrapper, useIntersectionObserver} from '#preact/component';
import {setStyle} from '#core/dom/style';
import {useMergeRefs} from '#preact/utils';
Expand Down Expand Up @@ -63,7 +63,7 @@ export function BentoIframe({
return;
}
targetOriginRef.current = event.origin;
const win = toWin(iframe.ownerDocument.defaultView);
const win = getWin(iframe);
observerRef.current = new win.IntersectionObserver(viewabilityCb, {
threshold: DEFAULT_THRESHOLD,
});
Expand All @@ -77,7 +77,7 @@ export function BentoIframe({
if (!iframe?.ownerDocument.defaultView) {
return;
}
const win = toWin(iframe.ownerDocument.defaultView);
const win = getWin(iframe);
win.addEventListener('message', handleSendIntersectionsPostMessage);
let observer = observerRef.current;

Expand Down Expand Up @@ -152,7 +152,7 @@ export function BentoIframe({
if (!iframe) {
return;
}
const win = toWin(iframe.ownerDocument.defaultView);
const win = getWin(iframe);
if (!win) {
return;
}
Expand Down
4 changes: 2 additions & 2 deletions extensions/amp-lightbox/1.0/amp-lightbox.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {CSS} from '../../../build/amp-lightbox-1.0.css';
import {Services} from '#service';
import {createCustomEvent} from '#utils/event-helper';
import {isExperimentOn} from '#experiments';
import {toWin} from '#core/window';
import {getWin} from '#core/window';
import {userAssert} from '#utils/log';

/** @const {string} */
Expand Down Expand Up @@ -41,7 +41,7 @@ class AmpLightbox extends BaseElement {
/** @override */
triggerEvent(element, eventName, detail) {
const event = createCustomEvent(
toWin(element.ownerDocument.defaultView),
getWin(element),
`amp-lightbox.${eventName}`,
detail
);
Expand Down
4 changes: 2 additions & 2 deletions extensions/amp-pinterest/0.1/pin-widget.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {Keys} from '#core/constants/key-codes';
import {measureIntersection} from '#core/dom/layout/intersection';
import {toWin} from '#core/window';
import {getWin} from '#core/window';

import {Services} from '#service';

Expand Down Expand Up @@ -32,7 +32,7 @@ export class PinWidget {
'The data-url attribute is required for Pin widgets'
);
this.element = rootElement;
this.xhr = Services.xhrFor(toWin(rootElement.ownerDocument.defaultView));
this.xhr = Services.xhrFor(getWin(rootElement));
this.pinId = '';
this.alt = '';
this.pinUrl = '';
Expand Down
4 changes: 2 additions & 2 deletions extensions/amp-pinterest/0.1/save-button.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {toWin} from '#core/window';
import {getWin} from '#core/window';

import {Services} from '#service';

Expand Down Expand Up @@ -43,7 +43,7 @@ export class SaveButton {
'The data-description attribute is required for Save buttons'
);
this.element = rootElement;
this.xhr = Services.xhrFor(toWin(rootElement.ownerDocument.defaultView));
this.xhr = Services.xhrFor(getWin(rootElement));
this.color = rootElement.getAttribute('data-color');
this.count = rootElement.getAttribute('data-count');
this.lang = rootElement.getAttribute('data-lang');
Expand Down
4 changes: 2 additions & 2 deletions extensions/amp-selector/1.0/amp-selector.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {ActionTrust} from '#core/constants/action-constants';
import {dict} from '#core/types/object';
import {toWin} from '#core/window';
import {getWin} from '#core/window';

import {isExperimentOn} from '#experiments';

Expand Down Expand Up @@ -52,7 +52,7 @@ class AmpSelector extends BaseElement {
/** @override */
triggerEvent(element, eventName, detail) {
const event = createCustomEvent(
toWin(element.ownerDocument.defaultView),
getWin(element),
`amp-selector.${eventName}`,
detail
);
Expand Down

0 comments on commit 8d615b4

Please sign in to comment.