Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Display content size calculation time #1332

Merged
merged 3 commits into from
Sep 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"delog",
"filesize",
"iife",
"Initialised",
"Initialising",
"javascripts",
"logcapture",
Expand Down
2 changes: 1 addition & 1 deletion example/html/child/frame.content.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<html>
<head>
<meta charset="utf-8" />
<title>iFrame message passing test</title>
<title>Iframe-Resizer Test Content</title>
<meta name="description" content="iframe-resizer examples" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<script
Expand Down
2 changes: 1 addition & 1 deletion example/html/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<html>
<head>
<meta charset="utf-8" />
<title>iFrame message passing test</title>
<title>Iframe-Resizer Examples</title>
<meta name="description" content="iFrame message passing test" />
<meta name="viewport" content="width=device-width" />
<style>
Expand Down
36 changes: 24 additions & 12 deletions packages/child/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
} from '../common/consts'
import { addEventListener, removeEventListener } from '../common/listeners'
import { getModeData } from '../common/mode'
import { id } from '../common/utils'
import { id, round } from '../common/utils'
import {
advise,
adviser,
Expand Down Expand Up @@ -99,6 +99,8 @@ function iframeResizerChild() {
let taggedElements = []
let target = window.parent
let targetOriginDefault = '*'
let timerActive
let totalTime
let tolerance = 0
let triggerLocked = false
let version = ''
Expand Down Expand Up @@ -1082,7 +1084,7 @@ The <b>size()</> method has been deprecated and replaced with <b>resize()</>. U
customWidth,
msg,
) {
const isForceResizableEvent = () => !(triggerEvent in { init: 1, size: 1 })
const isForceResizableEvent = () => !triggerEvent !== MANUAL_RESIZE_REQUEST

const isForceResizableCalcMode = () =>
(calculateHeight && heightCalcMode in resetRequiredMethods) ||
Expand All @@ -1092,12 +1094,6 @@ The <b>size()</> method has been deprecated and replaced with <b>resize()</>. U
(calculateHeight && checkTolerance(height, newHeight)) ||
(calculateWidth && checkTolerance(width, newWidth))

function checkDownSizing() {
if (isForceResizableEvent() && isForceResizableCalcMode()) {
resetIframe(triggerEventDesc)
}
}

const newHeight =
undefined === customHeight ? getHeight[heightCalcMode]() : customHeight
const newWidth =
Expand All @@ -1108,8 +1104,10 @@ The <b>size()</> method has been deprecated and replaced with <b>resize()</>. U
height = newHeight
width = newWidth
sendMsg(height, width, triggerEvent, msg)
} else if (isForceResizableEvent() && isForceResizableCalcMode()) {
resetIframe(triggerEventDesc)
} else {
checkDownSizing()
timerActive = false // We're not resizing, so turn off the timer
}
}

Expand All @@ -1122,6 +1120,8 @@ The <b>size()</> method has been deprecated and replaced with <b>resize()</>. U
customWidth,
msg,
) {
totalTime = performance.now()

if (!autoResize && triggerEvent !== MANUAL_RESIZE_REQUEST) {
log('Resizing disabled')
return
Expand All @@ -1136,6 +1136,7 @@ The <b>size()</> method has been deprecated and replaced with <b>resize()</>. U

if (!sendPending) {
log(`Resize event: ${triggerEventDesc}`)
timerActive = true
sizeIframe(triggerEvent, triggerEventDesc, customHeight, customWidth, msg)
requestAnimationFrame(() => {
sendPending = false
Expand Down Expand Up @@ -1188,14 +1189,25 @@ The <b>size()</> method has been deprecated and replaced with <b>resize()</>. U
log(`Message targetOrigin: ${targetOrigin}`)
}

function displayTimeTaken() {
const timer = round(performance.now() - totalTime)
info(
triggerEvent === 'init'
? `Initialised iFrame in ${timer}ms`
: `Content size recalculated in ${timer}ms`,
)
timerActive = false
}

function sendToParent() {
const size = `${height + (offsetHeight || 0)}:${width + (offsetWidth || 0)}`
const message = `${myID}:${size}:${triggerEvent}${undefined === msg ? '' : `:${msg}`}`

log(
`Sending message to host page (${message}) via ${sameDomain ? 'sameDomain' : 'postMessage'}`,
)
if (timerActive) displayTimeTaken()

info(
`Sending message to host page via ${sameDomain ? 'sameDomain' : 'postMessage'} (${message})`,
)

if (sameDomain) {
window.parent.iframeParentListener(msgID + message)
Expand Down
2 changes: 1 addition & 1 deletion packages/child/log.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ export const log = (...msg) =>
// eslint-disable-next-line no-unused-vars
export const info = (...msg) =>
// eslint-disable-next-line no-console
console?.info(`[iframe-resizer][${id}]`, ...msg)
logging && console?.info(`[iframe-resizer][${id}]`, ...msg)

export const warn = (...msg) =>
// eslint-disable-next-line no-console
Expand Down
3 changes: 1 addition & 2 deletions packages/child/perf.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { round } from '../common/utils'
import { advise, info, log } from './log'

const SECOND = 1000
const DEC_PLACES = 100_000 // 5 decimal places
const PERF_CHECK_INTERVAL = 5 * SECOND
const THRESHOLD = 4 // ms

Expand All @@ -13,7 +13,6 @@ const timings = []
const usedTags = new WeakSet()

const addUsedTag = (el) => typeof el === 'object' && usedTags.add(el)
const round = (num) => Math.floor(num * DEC_PLACES) / DEC_PLACES

let lastPerfEl = null
let perfEl = null
Expand Down
4 changes: 4 additions & 0 deletions packages/common/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,7 @@ export const once = (fn) => {
}

export const id = (x) => x

const ROUNDING = 100_000

export const round = (value) => Math.round(value * ROUNDING) / ROUNDING
2 changes: 1 addition & 1 deletion spec/childSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ define(['iframeResizerChild', 'jquery'], (mockMsgListener, $) => {
win.parentIFrame.autoResize(true)

expect(console.log).toHaveBeenCalledWith(
'[iframe-resizer][parentIFrameTests] Sending message to host page (parentIFrameTests:0:0:autoResize:true) via postMessage',
'[iframe-resizer][parentIFrameTests] Resize event: Auto Resize enabled',
)
})

Expand Down
Loading