Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(401)

Side by Side Diff: chrome/browser/resources/uber/uber_utils.js

Issue 418663002: Typecheck JS files for chrome://help before doing import transition (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@json_to_pydict
Patch Set: revert assert.js to master Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/resources/uber/uber.js ('k') | ui/webui/resources/js/cr/ui/focus_manager.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview A collection of utility methods for UberPage and its contained 6 * @fileoverview A collection of utility methods for UberPage and its contained
7 * pages. 7 * pages.
8 */ 8 */
9 9
10 cr.define('uber', function() { 10 cr.define('uber', function() {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 var scrollLeft = scrollLeftForDocument(document); 44 var scrollLeft = scrollLeftForDocument(document);
45 var offset = scrollLeft * -1; 45 var offset = scrollLeft * -1;
46 for (var i = 0; i < headerElements.length; i++) { 46 for (var i = 0; i < headerElements.length; i++) {
47 // As a workaround for http://crbug.com/231830, set the transform to 47 // As a workaround for http://crbug.com/231830, set the transform to
48 // 'none' rather than 0px. 48 // 'none' rather than 0px.
49 headerElements[i].style.webkitTransform = offset ? 49 headerElements[i].style.webkitTransform = offset ?
50 'translateX(' + offset + 'px)' : 'none'; 50 'translateX(' + offset + 'px)' : 'none';
51 } 51 }
52 52
53 invokeMethodOnParent('adjustToScroll', scrollLeft); 53 invokeMethodOnParent('adjustToScroll', scrollLeft);
54 }; 54 }
55 55
56 /** 56 /**
57 * Handles 'message' events on window. 57 * Handles 'message' events on window.
58 * @param {Event} e The message event. 58 * @param {Event} e The message event.
59 */ 59 */
60 function handleWindowMessage(e) { 60 function handleWindowMessage(e) {
61 e = /** @type{!MessageEvent.<!{method: string, params: *}>} */(e);
Dan Beam 2014/08/07 20:50:46 type{ => type {
Vitaly Pavlenko 2014/08/07 20:59:24 Done.
61 if (e.data.method === 'frameSelected') 62 if (e.data.method === 'frameSelected')
62 handleFrameSelected(); 63 handleFrameSelected();
63 else if (e.data.method === 'mouseWheel') 64 else if (e.data.method === 'mouseWheel')
64 handleMouseWheel(e.data.params); 65 handleMouseWheel(
66 /** @type {{deltaX: number, deltaY: number}} */(e.data.params));
65 else if (e.data.method === 'popState') 67 else if (e.data.method === 'popState')
66 handlePopState(e.data.params.state, e.data.params.path); 68 handlePopState(e.data.params.state, e.data.params.path);
67 } 69 }
68 70
69 /** 71 /**
70 * This is called when a user selects this frame via the navigation bar 72 * This is called when a user selects this frame via the navigation bar
71 * frame (and is triggered via postMessage() from the uber page). 73 * frame (and is triggered via postMessage() from the uber page).
72 * @private 74 * @private
73 */ 75 */
74 function handleFrameSelected() { 76 function handleFrameSelected() {
75 setScrollTopForDocument(document, 0); 77 setScrollTopForDocument(document, 0);
76 } 78 }
77 79
78 /** 80 /**
79 * Called when a user mouse wheels (or trackpad scrolls) over the nav frame. 81 * Called when a user mouse wheels (or trackpad scrolls) over the nav frame.
80 * The wheel event is forwarded here and we scroll the body. 82 * The wheel event is forwarded here and we scroll the body.
81 * There's no way to figure out the actual scroll amount for a given delta. 83 * There's no way to figure out the actual scroll amount for a given delta.
82 * It differs for every platform and even initWebKitWheelEvent takes a 84 * It differs for every platform and even initWebKitWheelEvent takes a
83 * pixel amount instead of a wheel delta. So we just choose something 85 * pixel amount instead of a wheel delta. So we just choose something
84 * reasonable and hope no one notices the difference. 86 * reasonable and hope no one notices the difference.
85 * @param {Object} params A structure that holds wheel deltas in X and Y. 87 * @param {{deltaX: number, deltaY: number}} params A structure that holds
88 * wheel deltas in X and Y.
86 */ 89 */
87 function handleMouseWheel(params) { 90 function handleMouseWheel(params) {
88 window.scrollBy(-params.deltaX * 49 / 120, -params.deltaY * 49 / 120); 91 window.scrollBy(-params.deltaX * 49 / 120, -params.deltaY * 49 / 120);
89 } 92 }
90 93
91 /** 94 /**
92 * Called when the parent window restores some state saved by uber.pushState 95 * Called when the parent window restores some state saved by uber.pushState
93 * or uber.replaceState. Simulates a popstate event. 96 * or uber.replaceState. Simulates a popstate event.
97 * @param {PopStateEvent} state A state object for replaceState and pushState.
98 * @param {string} path The path the page navigated to.
99 * @suppress {checkTypes}
94 */ 100 */
95 function handlePopState(state, path) { 101 function handlePopState(state, path) {
96 history.replaceState(state, '', path); 102 window.history.replaceState(state, '', path);
97 window.dispatchEvent(new PopStateEvent('popstate', {state: state})); 103 window.dispatchEvent(new PopStateEvent('popstate', {state: state}));
98 } 104 }
99 105
100 /** 106 /**
101 * @return {boolean} Whether this frame has a parent. 107 * @return {boolean} Whether this frame has a parent.
102 */ 108 */
103 function hasParent() { 109 function hasParent() {
104 return window != window.parent; 110 return window != window.parent;
105 } 111 }
106 112
107 /** 113 /**
108 * Invokes a method on the parent window (UberPage). This is a convenience 114 * Invokes a method on the parent window (UberPage). This is a convenience
109 * method for API calls into the uber page. 115 * method for API calls into the uber page.
110 * @param {string} method The name of the method to invoke. 116 * @param {string} method The name of the method to invoke.
111 * @param {Object=} opt_params Optional property bag of parameters to pass to 117 * @param {(Object|number)=} opt_params Optional property bag of parameters
112 * the invoked method. 118 * to pass to the invoked method.
113 * @private 119 * @private
114 */ 120 */
115 function invokeMethodOnParent(method, opt_params) { 121 function invokeMethodOnParent(method, opt_params) {
116 if (!hasParent()) 122 if (!hasParent())
117 return; 123 return;
118 124
119 invokeMethodOnWindow(window.parent, method, opt_params, 'chrome://chrome'); 125 invokeMethodOnWindow(window.parent, method, opt_params, 'chrome://chrome');
120 } 126 }
121 127
122 /** 128 /**
123 * Invokes a method on the target window. 129 * Invokes a method on the target window.
124 * @param {string} method The name of the method to invoke. 130 * @param {string} method The name of the method to invoke.
125 * @param {Object=} opt_params Optional property bag of parameters to pass to 131 * @param {(Object|number)=} opt_params Optional property bag of parameters
126 * the invoked method. 132 * to pass to the invoked method.
127 * @param {string=} opt_url The origin of the target window. 133 * @param {string=} opt_url The origin of the target window.
128 * @private 134 * @private
129 */ 135 */
130 function invokeMethodOnWindow(targetWindow, method, opt_params, opt_url) { 136 function invokeMethodOnWindow(targetWindow, method, opt_params, opt_url) {
131 var data = {method: method, params: opt_params}; 137 var data = {method: method, params: opt_params};
132 targetWindow.postMessage(data, opt_url ? opt_url : '*'); 138 targetWindow.postMessage(data, opt_url ? opt_url : '*');
133 } 139 }
134 140
135 /** 141 /**
136 * Updates the page's history state. If the page is embedded in a child, 142 * Updates the page's history state. If the page is embedded in a child,
137 * forward the information to the parent for it to manage history for us. This 143 * forward the information to the parent for it to manage history for us. This
138 * is a replacement of history.replaceState and history.pushState. 144 * is a replacement of history.replaceState and history.pushState.
139 * @param {Object} state A state object for replaceState and pushState. 145 * @param {Object} state A state object for replaceState and pushState.
140 * @param {string} title The title of the page to replace.
141 * @param {string} path The path the page navigated to. 146 * @param {string} path The path the page navigated to.
142 * @param {boolean} replace If true, navigate with replacement. 147 * @param {boolean} replace If true, navigate with replacement.
143 * @private 148 * @private
144 */ 149 */
145 function updateHistory(state, path, replace) { 150 function updateHistory(state, path, replace) {
146 var historyFunction = replace ? 151 var historyFunction = replace ?
147 window.history.replaceState : 152 window.history.replaceState :
148 window.history.pushState; 153 window.history.pushState;
149 154
150 if (hasParent()) { 155 if (hasParent()) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 197
193 return { 198 return {
194 invokeMethodOnParent: invokeMethodOnParent, 199 invokeMethodOnParent: invokeMethodOnParent,
195 invokeMethodOnWindow: invokeMethodOnWindow, 200 invokeMethodOnWindow: invokeMethodOnWindow,
196 onContentFrameLoaded: onContentFrameLoaded, 201 onContentFrameLoaded: onContentFrameLoaded,
197 pushState: pushState, 202 pushState: pushState,
198 replaceState: replaceState, 203 replaceState: replaceState,
199 setTitle: setTitle, 204 setTitle: setTitle,
200 }; 205 };
201 }); 206 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/uber/uber.js ('k') | ui/webui/resources/js/cr/ui/focus_manager.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698