【この訳に特有な表記規約】
◎表記記号原文に現れる次に挙げる用語は、 `HTML$r による用法と整合でないので,対応する用語に置換している:
- `~top-level閲覧~文脈$ → `~top-level辿可能$
- `文書$の`~top-level閲覧~文脈$ → `文書$の`~node~navigable$の`~top-level辿可能$nav
- `文書$が`属する閲覧~文脈$ → `文書$の`~node~navigable$
1. 用法を成す例
◎非規範的この例では、 “~lockする” ~buttonを~clickすると, ~fullscreenへ~~移行するよう要請してから,~screenを反対の方位 【横置きなら縦置き, 縦置きなら横置き】 に~lockする。 “~unlockする” ~buttonを~clickすると, ~screenを~unlockする。 ◎ In this example clicking the "Lock" button requests to go into fullscreen and then locks the screen to the opposite orientation. clicking the "unlock" button unlocks the screen. ◎ Example 1: Locking to a specific orientation and unlocking
<script> function updateLockButton() { const %lockButton = document.`getElementById$0("button"); const %newOrientation = getOppositeOrientation(); %lockButton.textContent = ``^${%newOrientation} に~lockする``^; } function getOppositeOrientation() { return `screen$0 .`orientation$0 .`type$0 .startsWith("portrait") ? "landscape" : "portrait"; } async function rotate(%lockButton) { if (!document.`fullscreenElement$0) { await document.`documentElement$0.`requestFullscreen$0(); } const %newOrientation = getOppositeOrientation(); await `screen$0.`orientation$0.`lock$0(%newOrientation); updateLockButton(%lockButton); } `screen$0.`orientation$0.`addEventListener$0("change", updateLockButton); window.addEventListener("load", updateLockButton); </script> <button onclick="rotate(this)" id="button"> ~lockする </button> <button onclick="`screen$0.`orientation$0.`unlock$0()"> ~unlockする </button> }
2. 概念
所与の `OrientationLockType$I %方位 に `~screen方位を~lockする@ ( `lock^en する)とは、 利用者は,~screenを特定の`~screen方位$にしか回転できなくなることを意味する 【!- possibly at the exclusion of other orientations】。 ~screenを どの方位へ回転できるかは、 【所与の %方位 に加えて,】[ ~UA/ 利用者-選好/ ~OSの規約/ 当の~screen自身 ]により決定される。 例えば,`横置き方位$に~lockするとは、 ~systemが許容するならば, 利用者は~screenを`縦置き方位$ではない方位 — `landscape-primary$oT, `landscape-secondary$oT — に回転できることを意味する。 ◎ To lock the screen orientation to an OrientationLockType orientation means that the screen can only be rotated by the user to a specific screen orientation - possibly at the exclusion of other orientations. The possible orientations to which the screen can be rotated is determined by the user agent, a user preference, the operating system's conventions, or the screen itself. For example, locking the orientation to landscape means that the screen can be rotated by the user to landscape-primary and maybe landscape-secondary if the system allows it, but won't change the orientation to portrait-secondary orientation.
`~screen方位を~unlockする@ ( `unlock^en する) とは、 末端-利用者が制約されない — すなわち、 ~systemが許容するどの`~screen方位$にも~screenを回転できる — ようにすることをいう。 ◎ To unlock the screen orientation the end user is unrestricted to rotate the screen to any screen orientation that the system allows.
2.1. ~screen方位の種別
~screenは、 次に挙げるいずれかの `~screen方位@ [ をとり得る/に`~lock$され得る ]: ◎ A screen can be in, or locked to, one of the following screen orientations:
【 これらの方位は、 一般に(`自然な方位$を除き),複数の[ 特定0の角度を指示する方位( `OrientationType$I 列挙~値) ]からなる集合を表現する (それらの総称である)。 】
- `全~方位@ ( `any^en ) ◎ Any
- 利用者は~screenを[ 機器の~OS/末端-利用者 ]により許容される どの方位にも回転できる。 ◎ The screen can be rotated by the user to any orientation allowed by the device's operating system or by the end-user.
- `既定の~screen方位@ ( `default^en ) ◎ Default (unlocked)
- ~screenが`~unlockされ$ていること — すなわち、`作動中な方位~lock$ ~EQ ~NULL — を表す,機器の既定の挙動。 この方位は、[ 機器の~OS/~UA ]により決定されるか, 末端-利用者により制御されるか, 場合によっては`~installした~web~app$により設定される。 例えば,~screen方位が~unlockされている下では、 利用者が機器を回転するとき,方位~変化を `portrait-secondary$oL 以外 — `portrait-primary$oL, `landscape-primary$oL, `landscape-secondary$oL — に制限する機器もあろう。 ◎ The device's default behavior for when the screen is unlocked (i.e., the active orientation lock is null). This orientation is determined by the device's operating system, or the user agent, or controlled by the end-user, or possibly set by an installed web application. For example, when the screen orientation is unlocked and the user rotates the device, some devices will limit orientation changes to portrait-primary, landscape-primary, and landscape-secondary, but not to portrait-secondary.
- `横置き方位@ ( `landscape^en ) ◎ Landscape
- ~screenの縦横比は、 横幅が縦幅より大きい。 ◎ The screen's aspect ratio has a width greater than the height.
- `自然な方位@ ( `natural^en ) ◎ Natural
- 機器の表示~用に最も自然とされる方位であり、[ ~UA/利用者/~OS/~screen自身 ]により決定される。 例えば、 ~screenに対面している利用者が,自身の手で機器を正立に[ ~viewして/保持して ]いるとき。 [ ~computer~monitorにおいては `landscape-primary$oT / 携帯端末においては `portrait-primary$oT ]が自然になることが共通的にある。 ◎ The most natural orientation for the device's display as determined by the user agent, the user, the operating system, or the screen itself. For example, a device viewed, or held upright in the user's hand, with the screen facing the user. A computer monitor are commonly naturally landscape-primary, while a mobile phones are commonly naturally portrait-primary.
- `縦置き方位@ ( `portrait^en ) ◎ Portrait
- ~screenの縦横比は、 縦幅が横幅より大きい。 ◎ The screen's aspect ratio has a height greater than the width.
- `首-方位@ ( `primary^en ) ◎ Primary
- 機器の~screenは[ `縦置き方位$/`横置き方位$ ]用の`自然な方位$にある。 ◎ The device's screen natural orientation for either portrait or landscape.
- `副-方位@ ( `secondary^en ) ◎ Secondary
- 機器の~screenは[ `縦置き方位$/`横置き方位$ ]用の`首-方位$ではない方にある。 ◎ The opposite of the device's screen primary orientation for portrait or landscape.
【 `自然な方位$は,常に`首-方位$に~~分類されるので、 180° 回転した方位は,`副-方位$になる。 】【 `自然な方位$が`縦置き方位$であるならば、 2 つある`横置き方位$のうち,自然な方位から[ 反時計回りに 90° 回転された方が`首-方位$, 逆に回転された方が`副-方位$ ]になる (縦置きと横置きを入れ替えた場合も同様) — `~screen方位~値~list$を見よ。 以前は、 どちらが首-方位になるか指定されていなかった。 】
2.2. 現在の~screen方位の種別と角度
出力~機器の~screenには、 次に挙げる概念が結付けられる: ◎ The screen of the output device has the following associated concepts:
- `作動中な方位~lock@ ◎ Active orientation lock
- 次のいずれか ⇒# ~NULL(~screenは,`~unlockされ$ている)/ `OrientationLockType$I として表現される`~screen方位$(~screenは,この方位に`~lock$されている) ◎ The screen orientation, represented as a OrientationLockType, to which the screen is locked, or null when unlocked.
- `現在の方位~角度@ ◎ Current orientation angle
- ~screenが その`自然な方位$から反時計回りに回転された角度を[ `~screen方位~値~list$から導出される度d数 ]として与える。 ◎ The angle in degrees that the screen is rotated counter-clockwise from its natural orientation as derived by the screen orientation values list.
- `現在の方位~種別@ ◎ Current orientation type
- `OrientationType$I として表現される`~screen方位$。 ◎ The screen orientation of the screen, represented as a OrientationType.
次に与える `~screen方位~値~list@ が、 所与の~screenの`自然な方位$において[ 各~screen方位~種別に結付けられる角度 ]を標準~化する: ◎ The screen orientation values lists below standardize the angles associated with each screen orientation type for screens with different natural orientations:
- `自然な方位$は`縦置き方位$である場合 ⇒# `portrait-primary$oT は 0° / `landscape-primary$oT は 90° / `portrait-secondary$oT は 180° / `landscape-secondary$oT は 270° ◎ For screens with a natural portrait orientation: • portrait-primary: 0° • landscape-primary: 90° • portrait-secondary: 180° • landscape-secondary: 270°
- `自然な方位$は`縦置き方位$である場合 ⇒# `landscape-primary$oT は 0° / `portrait-primary$oT は 90° / `landscape-secondary$oT は 180° / `portrait-secondary$oT は 270° ◎ For screens with a natural landscape orientation: • landscape-primary: 0° • portrait-primary: 90° • landscape-secondary: 180° • portrait-secondary: 270°
3. `Document^I ~interfaceに対する拡張
3.1. 内部~slot
`Document$I ~interfaceは、 次に挙げる内部~slotで拡張される: ◎ The Document interface is extended with the following internal slots: ◎ Internal Slot Description
- `orientationPendingPromise@sl
- 次のいずれか ⇒# ~NULL / ある `Promise$I (~supportされるいずれかの方位に~screenを~lockする要請を表現する) ◎ Either null or a Promise. When assigned a Promise, that promise represents a request to lock the screen orientation.
4. `Screen^I ~interfaceに対する拡張
partial interface `Screen$I { [`SameObject$] readonly attribute `ScreenOrientation$I `orientation@m; };
各 `Window$I ~objには、 `方位~obj@ が結付けられる — それは、 `Screen$I の `orientation$m 属性(すなわち、 `window.screen.orientation^c )にあてがわれる `ScreenOrientation$I ~instanceである。 ◎ The Window object has an associated ScreenOrientation, which is a Screen's orientation object (i.e., the ScreenOrientation instance at window.screen.orientation).
5. `ScreenOrientation^I ~interface
[`Exposed$=Window] interface `ScreenOrientation@I : `EventTarget$I { `Promise$<`undefined$> `lock$m(`OrientationLockType$I %orientation); `undefined$ `unlock$m(); readonly attribute `OrientationType$I `type$m; readonly attribute `unsigned short$ `angle$m; attribute `EventHandler$I `onchange$m; };
5.1. 内部~slot
◎ Internal Slot Description
- `angle@sl
- ~screenの最後に既知な`現在の方位~角度$を[ `~screen方位~値~list$から導出されるとおり, `unsigned short^c 型の度d数 ]として表現する。 ◎ Represents the screen's last known current orientation angle in degrees as an unsigned short as derived from the screen orientation values lists.
- `initialType@sl
- `閲覧~文脈$が作成された時点における,~screenの`現在の方位~種別$を表現する。 ◎ Represents the screen's current orientation type when the browsing context was created.
- `type@sl
- ~screenの最後に既知な`現在の方位~種別$を `OrientationType$I 列挙~値として表現する。 ◎ Represents the screen's last known current orientation type as an OrientationType enum value.
5.2. `lock()^m ~method
`~UA$は、 `~screen方位を~lockする$に先立って[ `文書$, その`~node~navigable$ ]が満たす必要がある 1 つ以上の `事前~lock条件@ を要求してもヨイ。 例えば,[ `§ Web Application Manifest との相互作用@#appmanifest-interaction$, `§ Fullscreen API との相互作用@#fullscreen-interaction$ ]を見よ。 ◎ ↓When the lock() method is invoked with OrientationLockType orientation, the user agent MUST run the following steps. ◎ The user agent MAY require a document and its associated browsing context to meet one or more pre-lock conditions in order to lock the screen orientation. See 10. Interaction with Web Application Manifest and 9. Interaction with Fullscreen API.
`lock(orientation)@m ~method手続きは: ◎ ↑
- %文書 ~LET コレに`関連な大域~obj$に`結付けられた文書$ ◎ Let document be this's relevant global object's associated Document.
-
`共通な安全性~検査$( %文書 )
例外が投出されたときは,~catchして ⇒ ~RET `却下される~promise$( その例外 )
◎ Run the common safety checks with document. If an exception is thrown, return a promise rejected with that exception and abort these steps. - ~IF[ `~UA$は~screen方位を %orientation に~lockすることを~supportしない ] ⇒ ~RET `却下される~promise$( `NotSupportedError$E 例外 ) ◎ If the user agent does not support locking the screen orientation to orientation, return a promise rejected with a "NotSupportedError" DOMException and abort these steps.
- ~IF[ %文書 .`orientationPendingPromise$sl ~NEQ ~NULL ] ⇒ `現在の~lock~promiseを却下して~NULL化する$( %文書, "`AbortError$E" ) `lock-basic^test ◎ If document's [[orientationPendingPromise]] is not null, reject and nullify the current lock promise of document with an "AbortError".
- %文書 .`orientationPendingPromise$sl ~SET `新たな~promise$ `lock-basic^test ◎ Set document's [[orientationPendingPromise]] to a new promise.
- `方位~lockを適用する$( %文書, %orientation ) ◎ Apply orientation lock orientation to document.
- ~RET %文書 .`orientationPendingPromise$sl ◎ Return document's [[orientationPendingPromise]].
5.3. `unlock()^m ~method
`unlock()@m ~method手続きは: ◎ When the unlock() method is invoked, the user agent MUST run the following steps:
- %文書 ~LET コレに`関連な大域~obj$に`結付けられた文書$ ◎ Let document be this's relevant global object's associated Document.
- `共通な安全性~検査$( %文書 ) ◎ Run the common safety checks with document. If an exception is thrown, re-throw that exception and abort these steps.
- ~IF[ ~screenの`作動中な方位~lock$ ~EQ ~NULL ] ⇒ ~RET ◎ If screen's active orientation lock is null, return undefined.
- ~IF[ %文書 .`orientationPendingPromise$sl ~NEQ ~NULL ] ⇒ `現在の~lock~promiseを却下して~NULL化する$( %文書, "`AbortError$E" ) ◎ If document's [[orientationPendingPromise]] is not null, reject and nullify the current lock promise of document with an "AbortError".
- `方位~lockを適用する$( %文書 ) ◎ Apply orientation lock null to document.
注記: `unlock()$m が~promiseを返さないのは、 それが`既定の~screen方位$に~lockすることに等価であり, その方位は`~UA$に既知でないこともあるからである。 よって,~UAは、 新たに どの方位になるのか — さらには、 方位が変化するかどうかさえも — 予測できない。 ◎ Note: Why does unlock() not return a promise? ◎ unlock() does not return a promise because it is equivalent to locking to the default screen orientation which might or might not be known by the user agent. Hence, the user agent can not predict what the new orientation is going to be and even if it is going to change at all.
5.4. 共通な安全性~検査
`共通な安全性~検査@ は、 所与の ( `文書$ %文書 ) に対し: ◎ The common safety checks for a Document document are the following steps:
- ~IF[ %文書 は`全部的に作動中$でない ] ⇒ ~THROW `InvalidStateError$E `non-fully-active^test ◎ If document is not fully active, throw an "InvalidStateError" DOMException.
- ~IF[ `閲覧~文脈~sandbox化( 方位~lock )~flag$ ~IN %文書 にて`作動中な~sandbox法~flag集合$ ] ⇒ ~THROW `SecurityError$E `lock-sandboxed-iframe^test ◎ If document has the sandboxed orientation lock browsing context flag set, throw "SecurityError" DOMException.
- ~IF[ %文書 の`可視性~状態$doc ~EQ `hidden^l ] ⇒ ~THROW `SecurityError$E `hidden_document^test ◎ If document's visibility state is "hidden", throw "SecurityError" DOMException.
5.5. `type^m 属性
`type@m 取得子~手続きは ⇒ ~RET コレ.`type$sl ◎ When getting, the type attribute returns this's [[type]].
5.6. `angle^m 属性
`angle@m 取得子~手続きは ⇒ ~RET コレ.`angle$sl ◎ When getting, the angle attribute returns this's [[angle]].
注記: `angle$m 属性は、 ~screenが`自然な方位$からどれだけ回転されたかを表現する。 ~screenがどう回転されたかに応じて角度がどう変化するかは、 `~screen方位~値~list$が指定する。 ◎ Note: What does the value given for angle represent? ◎ The angle attribute represents how far the screen has rotated from it natural orientation. The screen orientation values list specifies how the angle changes depending on the how screen is rotated.
5.7. `onchange^m ~event~handler属性
`onchange@m 属性は、 `onchange$m `~event~handler$用の`~event~handler~IDL属性$である — その`~event~handler~event型$は、 `change@et である。 ◎ The onchange attribute is an event handler IDL attribute for the onchange event handler, whose event handler event type is change.
6. `OrientationLockType^I 列挙
enum `OrientationLockType@I { `any$oL, `natural$oL, `landscape$oL, `portrait$oL, `portrait-primary$oL, `portrait-secondary$oL, `landscape-primary$oL, `landscape-secondary$oL };
`OrientationLockType$I 列挙は、 ~screenを どの~screen方位に`~lock$できるようになり得るかを表現する: ◎ The OrientationLockType enum represents the screen orientations to which a screen can be potentially locked.
注記: ~UAは、 アリな `OrientationLockType$I 値の下位集合 — 例: { `portrait-secondary$oT, `landscape-secondary$oT } — しか~supportしないかもしれない。 ◎ Note: Orientation support ◎ User agents might only support a subset of the possible OrientationLockType values. For example, a user agent might not support locking to the "portrait-secondary" or "landscape-secondary" orientations.
値 | 表現する方位 |
---|---|
`any@oL | `全~方位$ |
`natural@oL | `自然な方位$ |
`landscape@oL | `横置き方位$ |
`portrait@oL | `縦置き方位$ |
`portrait-primary@oL | `縦置き方位$かつ`首-方位$ |
`portrait-secondary@oL | `縦置き方位$かつ`副-方位$ |
`landscape-primary@oL | `横置き方位$かつ`首-方位$ |
`landscape-secondary@oL | `横置き方位$かつ`副-方位$ |
7. `OrientationType^I 列挙
enum `OrientationType@I { `portrait-primary$oT, `portrait-secondary$oT, `landscape-primary$oT, `landscape-secondary$oT };
`OrientationType$I 列挙~値は、 ~screenの`現在の方位~種別$を表現するために利用される: ◎ The OrientationType enum values are used to represent the screen's current orientation type.
値 | 表現する方位 |
---|---|
`portrait-primary@oT | `縦置き方位$かつ`首-方位$ |
`portrait-secondary@oT | `縦置き方位$かつ`副-方位$ |
`landscape-primary@oT | `横置き方位$かつ`首-方位$ |
`landscape-secondary@oT | `横置き方位$かつ`副-方位$ |
8. ~algo
8.1. `ScreenOrientation^I ~objの初期化-法
`閲覧~文脈$ %文脈 が作成されたときは、 次を走らすモノトスル: ◎ When a browsing context context is created, the user agent MUST:
- %~screen方位 ~LET %文脈 【にて`作動中な~window$bc】の`方位~obj$ ◎ Let screenOrientation be context's associated ScreenOrientation.
- %~screen方位 .`initialType$sl ~SET ~screenの`現在の方位~種別$ ◎ Initialize screenOrientation's [[initialType]] internal slot to the screen's current orientation type.
- %~screen方位 .`type$sl ~SET ~screenの`現在の方位~種別$ ◎ Initialize screenOrientation's [[type]] internal slot to the screen's current orientation type.
- %~screen方位 .`angle$sl ~SET ~screenの`現在の方位~角度$ ◎ Initialize screenOrientation's [[angle]] internal slot to the screen's current orientation angle.
8.2. 文書の現在の~lock~promiseの却下-法
`現在の~lock~promiseを却下して~NULL化する@ ときは、 所与の ( `文書$ %文書, 文字列【!DOMString】 %例外~名 ) に対し,次を走らすモノトスル: ◎ When steps require to reject and nullify the current lock promise of Document document with a DOMString exceptionName, the user agent MUST:
- %~promise ~LET %文書 .`orientationPendingPromise$sl ◎ ↓
- ~Assert: %~promise ~NEQ ~NULL ◎ Assert: [[orientationPendingPromise]] is not null. ◎ Let promise be document's [[orientationPendingPromise]].
-
`大域~taskを~queueする$( `~DOM操作~task~source$, %文書 に`関連な大域~obj$, 次の手続き ) ◎ Queue a global task on the DOM manipulation task source with document's relevant global object to\
手続きは ⇒ `~promiseを却下する$( %~promise, 新たな %例外~名 `DOMException$I )◎ reject promise with a new exceptionName DOMException. - %文書 .`orientationPendingPromise$sl ~SET ~NULL ◎ Set document's [[orientationPendingPromise]] to null.
8.3. 方位~lockの適用-法
`方位~lockを適用する@ ときは、 所与の ( `文書$ %文書, `OrientationLockType$I %方位 (省略時は ~NULL )) に対し,次を遂行するモノトスル: ◎ When steps require to apply orientation lock of OrientationLockType? orientation to Document document, the user agent MUST perform do the following steps:
-
~IF[ %文書 `stops being^en `全部的に作動中$ `while in^en `並列的$† ]~AND[ %文書 .`orientationPendingPromise$sl ~NEQ ~NULL ] ⇒ `現在の~lock~promiseを却下して~NULL化する$( %文書, "`AbortError$E" )
【† この段は、 並列的に遂行されていないにもかかわらず, “並列的” が利用されている — その意図が はっきりしない (単に, “%文書 は`全部的に作動中$でない” ?)。 】
◎ If document stops being fully active while in parallel, and [[orientationPendingPromise]] is not null, reject and nullify the current lock promise of document with an "AbortError". - %~top-level文書 ~LET %文書 の`~node~navigable$の`~top-level辿可能$navにて`作動中な文書$nav ◎ Let topDocument be document's top-level browsing context's active document.
-
%~top-level文書 の`~node~navigable$の`子孫~navigable群$を成す ~EACH( %~navigable ) に対し: ◎ Let descendantDocs be an ordered set consisting of topDocument's descendant navigables's active documents, if any, in tree order. ◎ For each doc in descendantDocs:
- %子孫~文書 ~LET %~navigable にて`作動中な文書$nav ◎ ↑
- ~IF[ %子孫~文書 ~EQ %文書 ] ⇒ ~CONTINUE ◎ If doc is document, continue.
- ~IF[ %子孫~文書 .`orientationPendingPromise$sl ~EQ ~NULL ] ⇒ ~CONTINUE ◎ If doc [[orientationPendingPromise]] is null, continue.
- `現在の~lock~promiseを却下して~NULL化する$( %子孫~文書, "`AbortError$E" ) ◎ Reject and nullify the current lock promise of doc with an "AbortError".
-
この段は`並列的$に走らす: ◎ Run the following sub-steps in parallel:
- ~IF[ %文書 は`全部的に作動中$でない ]~AND[ %文書 .`orientationPendingPromise$sl ~NEQ ~NULL ] ⇒# `現在の~lock~promiseを却下して~NULL化する$( %文書, "`AbortError$E" ); ~RET ◎ If document has stopped being fully active, and if the document's [[orientationPendingPromise]] is not null, reject and nullify the current lock promise of document with an "AbortError" and abort these steps.
- ~IF[ %方位 ~EQ ~NULL ] ⇒ `~screen方位を~unlockする$ ◎ If orientation is null, unlock the screen orientation.
-
~ELSE: ◎ Otherwise,\
- %方位 に`~screen方位を~lockする$よう試みる — ~platform規約に依存して, %文書 の表示域の描かれ方を %方位 に合致するよう変更する ◎ attempt to lock the screen orientation to orientation. Depending on platform conventions, change how the viewport is drawn to match orientation.
-
~IF[ 前~段の試みは失敗した (これまでに確立された利用者-選好, ~platform制限, その他の何らかの理由に因り) ]: ◎ If the attempt fails due to previously-established user preference, or platform limitation, or any other reason:
- ~screenの`作動中な方位~lock$ ~SET ~NULL ◎ Set the screen's active orientation lock to null.
-
`~taskを~queueする$【`大域~taskを~queueする$】( `~DOM操作~task~source$, %文書 に`関連な大域~obj$, 次の手続き ): ◎ Queue a task on the DOM manipulation task source with document's relevant global object to:
手続きは:
- ~IF[ %文書 .`orientationPendingPromise$sl ~NEQ ~NULL ] ⇒ `現在の~lock~promiseを却下して~NULL化する$( %文書, "`NotSupportedError$E" ) ◎ If the document's [[orientationPendingPromise]] is not null, reject and nullify the current lock promise of document with a "NotSupportedError".
-
`Abort these steps.^en
【 この段は、 実際には,この手続きの外に置かれるべきに思われる。 ~RET を意味するこの段は,ここに在っても無為であることに加え、 そうしなければ,上で`作動中な方位~lock$を設定する段も無為になるので。 】
- 【~RET (上の訳注を見よ。)】
注記: これは、 次のいずれかの場合に起こり得る:
- 利用者が[ ~web~appが~screen方位を変更する ]ことを防止する選好を設定した
- ~UAではなく下層の~platformが,所与の %方位 に~screen方位を~lockすることを許容していない 【これに該当するかどうかは、 %方位 にも依存するかもしれない。】
- ~screenの`作動中な方位~lock$ ~SET %方位 ◎ Set the screen's active orientation lock to orientation\
- [ `現在の方位~種別$, `現在の方位~角度$ ]を[ `~screen方位$に対する変更を反映する ]よう更新する ◎ and update the current orientation type and current orientation angle to reflect any changes to the screen orientation.
-
`大域~taskを~queueする$( `~DOM操作~task~source$, %文書 に`関連な大域~obj$, 次の手続き ): ◎ Queue a global task on the DOM manipulation task source with document's relevant global object to:
手続きは: ◎ ↑
-
%~promise ~LET %文書 .`orientationPendingPromise$sl ◎ Let promise be document's [[orientationPendingPromise]].
注記: ~promiseは `change$et ~eventを発火した後に解決する必要があるので、[ ~eventの~handler関数が `lock()$m を~callしても,中止されない ]よう参照を保つ。 ◎ Note As the promise needs to resolve after a "change" event is fired, we keep a reference to prevent it from being aborted by an event's handler function calling lock().
- %文書 .`orientationPendingPromise$sl ~SET ~NULL ◎ Set document's [[orientationPendingPromise]] to null.
- `~screen方位~変更~手続き$( %~top-level文書 ) ◎ Run the screen orientation change steps with topDocument.
- ~IF[ %~promise ~NEQ ~NULL ] ⇒ `~promiseを解決する$( %~promise ) ◎ If promise is not null, resolve promise with undefined.
-
8.4. ~screen方位の変化
所与の`~top-level辿可能$ %辿可能 に対し, [ ~UAが %辿可能 用に~screen方位を変更するよう決定した/ 利用者が %辿可能 を異なる~screenへ移動した ]ときは、 次を走らす ⇒ `~screen方位~変更~手続き$( %辿可能 にて`作動中な文書$nav ) ◎ When a user-agent determines that the screen's orientation has changed for a top-level browsing context, or the user moves the top-level browsing context to a different screen, then run the screen orientation change steps with the top-level browsing context's active document.
`onchange-event^test`~screen方位~変更~手続き@ は、 所与の ( `文書$ %文書 ) に対し,次に従う: ◎ The screen orientation change steps for Document document are as follows:
- ~IF[ %文書 の`可視性~状態$doc ~EQ `hidden^l ] ⇒ ~RET ◎ If document's visibility state is "hidden", abort these steps.
- %種別 ~LET ~screenの`現在の方位~種別$ ◎ ↓
- %角度 ~LET ~screenの`現在の方位~角度$ ◎ Let type and angle be the screen's current orientation type and current orientation angle.
- %~screen方位 ~LET %文書 に`関連な大域~obj$の`方位~obj$ ◎ Let screenOrientation be document's relevant global object's associated ScreenOrientation.
- ~IF[ %種別 ~EQ %~screen方位 .`type$sl ]~AND[ %角度 ~EQ %~screen方位 .`angle$sl ] ⇒ ~RET ◎ If type is equal to screenOrientation's [[type]] and angle is equal to screenOrientation's [[angle]], abort these steps.
-
`大域~taskを~queueする$( `利用者~対話~task~source$, %文書 に`関連な大域~obj$, 次の手続き ) ◎ Queue a global task on the user interaction task source with document's relevant global object to\
手続きは: ◎ perform the following steps:
- %~screen方位 .`angle$sl ~SET %角度 ◎ Set screenOrientation's [[angle]] to angle.
- %~screen方位 .`type$sl ~SET %種別 ◎ Set screenOrientation's [[type]] to type.
- `~eventを発火する$( %~screen方位, `change$et ) ◎ Fire an event named "change" at screenOrientation.
- %文書 の`~node~navigable$の`子孫~navigable群$を成す ~EACH( %~navigable ) に対し【!不要:if any, in tree order】 ⇒ `~screen方位~変更~手続き$( %~navigable にて`作動中な文書$nav ) ◎ Let descendantDocs be an ordered set consisting of document's descendant navigables's active documents, if any, in tree order. ◎ For each doc in descendantDocs, run the screen orientation change steps with doc.
8.5. ~page可視性~変化の取扱い
`~screen方位~変更~手続き$が走るのは、 `HTML$r の`可視性~状態を更新する$ときである。 ◎ [HTML]'s update the visibility state runs the screen orientation change steps.
注記: 開発者は、[ `文書$の`可視性~状態$doc ~EQ `hidden^l ]の間は[ 方位~変化~event【 `change$et 】を受取らなくなる ]ことを自覚する必要がある (`文書$が再び可視になったなら、方位~変化~eventを受取るようになる)。 ◎ Note Developers need to be aware that documents with a "hidden" visibility state will not receive an orientation change event. However, once the document becomes visible again, it will receive the change event.
8.6. 文書~unload時の取扱い
`文書~unload時の片付け手続き$を所与の ( `文書$ %文書 ) の下で走らすときは、 次も走らすモノトスル ⇒ ~IF[ 【!%文書 は ある`~top-level閲覧~文脈$にて`作動中な文書$navである】 %文書 ~EQ %文書 の`~node~navigable$の`~top-level辿可能$navにて`作動中な文書$nav ] ⇒ `~screen方位を全部的に~unlockする手続き$( %文書 ) ◎ Whenever the unloading document cleanup steps run with a document, the user agent MUST run the following steps: • If document is not a top-level browsing context's active document, abort these steps. • Run the fully unlock the screen orientation steps with document.
8.7. 方位の全部的な~unlock法
`~screen方位を全部的に~unlockする手続き@ は、 所与の ( `文書$ %文書 ) に対し,次に従う: ◎ The fully unlock the screen orientation steps for Document document are as follows:
- ~IF[ %文書 .`orientationPendingPromise$sl ~NEQ ~NULL ] ⇒ `現在の~lock~promiseを却下して~NULL化する$( %文書, "`AbortError$E" ) ◎ If document's [[orientationPendingPromise]] is not null, reject and nullify the current lock promise of document with an "AbortError".
- `方位~lockを適用する$( %文書 の`~node~navigable$の`~top-level辿可能$navにて`作動中な文書$nav ) ◎ Let topDocument be document's top-level browsing context's active document. ◎ Apply orientation lock null to topDocument.
9. `Fullscreen API^cite との相互作用
~UAは、 `事前~lock条件$として, `lock()$m の利用を`単純~fullscreen文書$ `fullscreen$r に制約するベキである。 ◎ A user agent SHOULD restrict the use of lock() to simple fullscreen documents as a pre-lock condition. [fullscreen]
`文書$ %文書 が`~fullscreenから抜出る$ `fullscreen$r ときは、 次も走らすとする ⇒ `~screen方位を全部的に~unlockする手続き$( %文書 ) ◎ When a document exits fullscreen, it also runs the fully unlock the screen orientation steps. [fullscreen]
10. `Web Application Manifest^cite との相互作用
`appmanifest$r は、[ ~manifestの `orientation$mb ~memberを介して,`文書$の`既定の~screen方位$を設定する ]ことを~web~appに許容する。 ◎ The Web Application Manifest specification allows web applications to set the default screen orientation via the the orientation member.
~UAは、 `事前~lock条件$として,[ `~installした~web~app$は、 `表示~mode$ `fullscreen^l で呈示される ]ことを要求するベキである。 ◎ A user agent SHOULD require installed web applications to be presented in the "fullscreen" display mode as a pre-lock condition.
11. ~accessibilityの考慮点
利用者は,自身の機器を固定的な方位に(例:車椅子の~arm上に)装着することもあるので、 開発者は,[ `~screen方位を~lockする$とき,利用者が自身の機器を回転する ]よう期待する場合には[ `WCAG21$r の`~screen方位に関する達成基準@~TR/WCAG21/#orientation$ ]を自覚する必要がある。 この達成基準は、 `本質的$な[ 内容, 機能性 ]すべてが[ `~screen方位$に関わらず,可用になる ]ようにする。 ~web~appは、 特定0の方位が`本質的$であるときは,利用者に方位~要件を助言しなければナラナイ。 ◎ As users can have their devices mounted in a fixed orientation (e.g. on the arm of a wheelchair), developers that expect users to rotate their device when locking the screen orientation need to be aware of the Web Content Accessibility Guidelines (WCAG) 2.1's Orientation Success Criterion. The criterion makes it essential that content and functionality is available regardless of the screen orientation. When a particular orientation is essential, web applications must advise the user of the orientation requirements.
12. ~privacyと~securityの考慮点
~screenの[ `現在の方位~種別$, `現在の方位~角度$ ]は、 いずれも指紋収集~行路になり得る。 以下に挙げる軽減は、[ 機器が どう保持されているかを露呈しないこと ]により利用者の~privacyを保護する助けになることに加え,[ `副-方位$の種別, それに結付けられた角度 ]が指紋収集~目的に利用されることを防止する。 ◎ A screen's type and angle are a potential fingerprinting vector. The following mitigation help protect a user's privacy by not revealing how a device is being held, and also prevents the secondary orientation type and associated angles from being user for fingerprinting purposes.
~UAは、 指紋収集に抵抗するためとして(例:私的~閲覧において),次のようにしてもヨイ: ◎ To resist fingerprinting (e.g., in private browsing), user agents MAY:
- `~top-level辿可能$が存続する限り,[ ~screenの`自然な方位$ ~EQ `initialType$sl ]であったかのように挙動する。 ◎ For the life of a top-level browsing context, behave as as if screen's natural orientation is [[initialType]].
- `type$m 取得子が返す値を[ `portrait-primary$oT / `landscape-primary$oT ](`首-方位$)のみに制約する — どちらを返すかは、 ~screenの縦横比により決定する。 ◎ Restrict the possible return values of the type getter to "portrait-primary" or "landscape-primary". The screen aspect ratio determines which is returned.
- `angle$m 取得子が返す値を[ `現在の方位~種別$が `initialType$sl に合致するならば 0 / ~ELSE_ 90 ]にする。 ◎ If the current orientation type matches [[initialType]], return 0 for the angle getter. Otherwise, return 90.
- ~screen方位が変化した場合に `change$et ~eventを発火するのは、 `現在の方位~種別$が[ `縦置き方位$から`横置き方位$へ, またはその逆へ変化した ]ときに限る。 ◎ If the screen orientation changes, only fire the change event when the current orientation type changes from portrait to landscape, or vice versa.