Index: third_party/WebKit/Source/devtools/front_end/screencast/ScreencastView.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/screencast/ScreencastView.js b/third_party/WebKit/Source/devtools/front_end/screencast/ScreencastView.js |
index 7e627659bc2c454a9d299fb5ee5776d67195603c..91bbe6654f3b216d8769f52dfda3f6f7e0a6d52a 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/screencast/ScreencastView.js |
+++ b/third_party/WebKit/Source/devtools/front_end/screencast/ScreencastView.js |
@@ -37,10 +37,11 @@ Screencast.ScreencastView = class extends UI.VBox { |
*/ |
constructor(screenCaptureModel) { |
super(); |
- this._target = screenCaptureModel.target(); |
this._screenCaptureModel = screenCaptureModel; |
- this._domModel = this._target.model(SDK.DOMModel); |
- this._resourceTreeModel = this._target.model(SDK.ResourceTreeModel); |
+ this._domModel = screenCaptureModel.target().model(SDK.DOMModel); |
+ this._resourceTreeModel = screenCaptureModel.target().model(SDK.ResourceTreeModel); |
+ this._networkManager = screenCaptureModel.target().model(SDK.NetworkManager); |
+ this._inputModel = screenCaptureModel.target().model(Screencast.InputModel); |
this.setMinimumSize(150, 150); |
this.registerRequiredCSS('screencast/screencastView.css'); |
@@ -221,7 +222,8 @@ Screencast.ScreencastView = class extends UI.VBox { |
return; |
if (!this._inspectModeConfig || event.type === 'mousewheel') { |
- this._simulateTouchForMouseEvent(event); |
+ if (this._inputModel) |
+ this._inputModel.emitTouchFromMouseEvent(event, this._screenOffsetTop, this._screenZoom); |
event.preventDefault(); |
if (event.type === 'mousedown') |
this._canvasElement.focus(); |
@@ -266,37 +268,8 @@ Screencast.ScreencastView = class extends UI.VBox { |
return; |
} |
- var type; |
- switch (event.type) { |
- case 'keydown': |
- type = 'keyDown'; |
- break; |
- case 'keyup': |
- type = 'keyUp'; |
- break; |
- case 'keypress': |
- type = 'char'; |
- break; |
- default: |
- return; |
- } |
- |
- var text = event.type === 'keypress' ? String.fromCharCode(event.charCode) : undefined; |
- this._target.inputAgent().invoke_dispatchKeyEvent({ |
- type: type, |
- modifiers: this._modifiersForEvent(event), |
- timestamp: event.timeStamp / 1000, |
- text: text, |
- unmodifiedText: text ? text.toLowerCase() : undefined, |
- keyIdentifier: event.keyIdentifier, |
- code: event.code, |
- key: event.key, |
- windowsVirtualKeyCode: event.keyCode, |
- nativeVirtualKeyCode: event.keyCode, |
- autoRepeat: false, |
- isKeypad: false, |
- isSystemKey: false |
- }); |
+ if (this._inputModel) |
+ this._inputModel.emitKeyEvent(event); |
event.consume(); |
this._canvasElement.focus(); |
} |
@@ -311,98 +284,23 @@ Screencast.ScreencastView = class extends UI.VBox { |
/** |
* @param {!Event} event |
*/ |
- _simulateTouchForMouseEvent(event) { |
- const buttons = {0: 'none', 1: 'left', 2: 'middle', 3: 'right'}; |
- const types = { |
- 'mousedown': 'mousePressed', |
- 'mouseup': 'mouseReleased', |
- 'mousemove': 'mouseMoved', |
- 'mousewheel': 'mouseWheel' |
- }; |
- if (!(event.type in types) || !(event.which in buttons)) |
- return; |
- if (event.type !== 'mousewheel' && buttons[event.which] === 'none') |
- return; |
- |
- if (event.type === 'mousedown' || typeof this._eventScreenOffsetTop === 'undefined') |
- this._eventScreenOffsetTop = this._screenOffsetTop; |
- |
- var modifiers = |
- (event.altKey ? 1 : 0) | (event.ctrlKey ? 2 : 0) | (event.metaKey ? 4 : 0) | (event.shiftKey ? 8 : 0); |
- |
- var convertedPosition = this._zoomIntoScreenSpace(event); |
- convertedPosition.y = Math.round(convertedPosition.y - this._eventScreenOffsetTop); |
- var params = { |
- type: types[event.type], |
- x: convertedPosition.x, |
- y: convertedPosition.y, |
- modifiers: modifiers, |
- timestamp: event.timeStamp / 1000, |
- button: buttons[event.which], |
- clickCount: 0 |
- }; |
- if (event.type === 'mousewheel') { |
- params.deltaX = event.wheelDeltaX / this._screenZoom; |
- params.deltaY = event.wheelDeltaY / this._screenZoom; |
- } else { |
- this._eventParams = params; |
- } |
- if (event.type === 'mouseup') |
- delete this._eventScreenOffsetTop; |
- this._target.inputAgent().invoke_emulateTouchFromMouseEvent(params); |
- } |
- |
- /** |
- * @param {!Event} event |
- */ |
_handleBlurEvent(event) { |
- if (typeof this._eventScreenOffsetTop !== 'undefined') { |
- var params = this._eventParams; |
- delete this._eventParams; |
- params.type = 'mouseReleased'; |
- this._target.inputAgent().invoke_emulateTouchFromMouseEvent(params); |
- } |
+ if (this._inputModel) |
+ this._inputModel.cancelTouch(); |
} |
/** |
* @param {!Event} event |
* @return {!{x: number, y: number}} |
*/ |
- _zoomIntoScreenSpace(event) { |
+ _convertIntoScreenSpace(event) { |
var position = {}; |
position.x = Math.round(event.offsetX / this._screenZoom); |
- position.y = Math.round(event.offsetY / this._screenZoom); |
- return position; |
- } |
- |
- /** |
- * @param {!Event} event |
- * @return {!{x: number, y: number}} |
- */ |
- _convertIntoScreenSpace(event) { |
- var position = this._zoomIntoScreenSpace(event); |
- position.y = Math.round(position.y - this._screenOffsetTop); |
+ position.y = Math.round(event.offsetY / this._screenZoom - this._screenOffsetTop); |
return position; |
} |
/** |
- * @param {!Event} event |
- * @return {number} |
- */ |
- _modifiersForEvent(event) { |
- var modifiers = 0; |
- if (event.altKey) |
- modifiers = 1; |
- if (event.ctrlKey) |
- modifiers += 2; |
- if (event.metaKey) |
- modifiers += 4; |
- if (event.shiftKey) |
- modifiers += 8; |
- return modifiers; |
- } |
- |
- /** |
* @override |
*/ |
onResize() { |
@@ -709,43 +607,47 @@ Screencast.ScreencastView = class extends UI.VBox { |
_createNavigationBar() { |
this._navigationBar = this.element.createChild('div', 'screencast-navigation'); |
- |
this._navigationBack = this._navigationBar.createChild('button', 'back'); |
this._navigationBack.disabled = true; |
- this._navigationBack.addEventListener('click', this._navigateToHistoryEntry.bind(this, -1), false); |
- |
this._navigationForward = this._navigationBar.createChild('button', 'forward'); |
this._navigationForward.disabled = true; |
- this._navigationForward.addEventListener('click', this._navigateToHistoryEntry.bind(this, 1), false); |
- |
this._navigationReload = this._navigationBar.createChild('button', 'reload'); |
- this._navigationReload.addEventListener('click', this._navigateReload.bind(this), false); |
- |
this._navigationUrl = this._navigationBar.createChild('input'); |
this._navigationUrl.type = 'text'; |
- this._navigationUrl.addEventListener('keyup', this._navigationUrlKeyUp.bind(this), true); |
- |
- this._navigationProgressBar = |
- new Screencast.ScreencastView.ProgressTracker(this._navigationBar.createChild('div', 'progress')); |
- |
- this._requestNavigationHistory(); |
- SDK.targetManager.addEventListener( |
- SDK.TargetManager.Events.InspectedURLChanged, this._requestNavigationHistory, this); |
+ this._navigationProgressBar = new Screencast.ScreencastView.ProgressTracker( |
+ this._resourceTreeModel, this._networkManager, this._navigationBar.createChild('div', 'progress')); |
+ |
+ if (this._resourceTreeModel) { |
+ this._navigationBack.addEventListener('click', this._navigateToHistoryEntry.bind(this, -1), false); |
+ this._navigationForward.addEventListener('click', this._navigateToHistoryEntry.bind(this, 1), false); |
+ this._navigationReload.addEventListener('click', this._navigateReload.bind(this), false); |
+ this._navigationUrl.addEventListener('keyup', this._navigationUrlKeyUp.bind(this), true); |
+ this._requestNavigationHistory(); |
+ this._resourceTreeModel.addEventListener( |
+ SDK.ResourceTreeModel.Events.MainFrameNavigated, this._requestNavigationHistory, this); |
+ this._resourceTreeModel.addEventListener( |
+ SDK.ResourceTreeModel.Events.CachedResourcesLoaded, this._requestNavigationHistory, this); |
+ } |
} |
+ /** |
+ * @param {number} offset |
+ */ |
_navigateToHistoryEntry(offset) { |
var newIndex = this._historyIndex + offset; |
if (newIndex < 0 || newIndex >= this._historyEntries.length) |
return; |
- this._target.pageAgent().navigateToHistoryEntry(this._historyEntries[newIndex].id); |
+ this._resourceTreeModel.navigateToHistoryEntry(this._historyEntries[newIndex]); |
this._requestNavigationHistory(); |
} |
_navigateReload() { |
- if (this._resourceTreeModel) |
- this._resourceTreeModel.reloadPage(); |
+ this._resourceTreeModel.reloadPage(); |
} |
+ /** |
+ * @param {!Event} event |
+ */ |
_navigationUrlKeyUp(event) { |
if (event.key !== 'Enter') |
return; |
@@ -754,25 +656,22 @@ Screencast.ScreencastView = class extends UI.VBox { |
return; |
if (!url.match(Screencast.ScreencastView._SchemeRegex)) |
url = 'http://' + url; |
- this._target.pageAgent().navigate(url); |
+ this._resourceTreeModel.navigate(url); |
this._canvasElement.focus(); |
} |
- _requestNavigationHistory() { |
- this._target.pageAgent().getNavigationHistory(this._onNavigationHistory.bind(this)); |
- } |
- |
- _onNavigationHistory(error, currentIndex, entries) { |
- if (error) |
+ async _requestNavigationHistory() { |
+ var history = await this._resourceTreeModel.navigationHistory(); |
+ if (!history) |
return; |
- this._historyIndex = currentIndex; |
- this._historyEntries = entries; |
+ this._historyIndex = history.currentIndex; |
+ this._historyEntries = history.entries; |
- this._navigationBack.disabled = currentIndex === 0; |
- this._navigationForward.disabled = currentIndex === (entries.length - 1); |
+ this._navigationBack.disabled = this._historyIndex === 0; |
+ this._navigationForward.disabled = this._historyIndex === (this._historyEntries.length - 1); |
- var url = entries[currentIndex].url; |
+ var url = this._historyEntries[this._historyIndex].url; |
var match = url.match(Screencast.ScreencastView._HttpRegex); |
if (match) |
url = match[1]; |
@@ -800,18 +699,21 @@ Screencast.ScreencastView._SchemeRegex = /^(https?|about|chrome):/; |
*/ |
Screencast.ScreencastView.ProgressTracker = class { |
/** |
+ * @param {?SDK.ResourceTreeModel} resourceTreeModel |
+ * @param {?SDK.NetworkManager} networkManager |
* @param {!Element} element |
*/ |
- constructor(element) { |
+ constructor(resourceTreeModel, networkManager, element) { |
this._element = element; |
- |
- SDK.targetManager.addModelListener( |
- SDK.ResourceTreeModel, SDK.ResourceTreeModel.Events.MainFrameNavigated, this._onMainFrameNavigated, this); |
- SDK.targetManager.addModelListener(SDK.ResourceTreeModel, SDK.ResourceTreeModel.Events.Load, this._onLoad, this); |
- SDK.targetManager.addModelListener( |
- SDK.NetworkManager, SDK.NetworkManager.Events.RequestStarted, this._onRequestStarted, this); |
- SDK.targetManager.addModelListener( |
- SDK.NetworkManager, SDK.NetworkManager.Events.RequestFinished, this._onRequestFinished, this); |
+ if (resourceTreeModel) { |
+ resourceTreeModel.addEventListener( |
+ SDK.ResourceTreeModel.Events.MainFrameNavigated, this._onMainFrameNavigated, this); |
+ resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.Load, this._onLoad, this); |
+ } |
+ if (networkManager) { |
+ networkManager.addEventListener(SDK.NetworkManager.Events.RequestStarted, this._onRequestStarted, this); |
+ networkManager.addEventListener(SDK.NetworkManager.Events.RequestFinished, this._onRequestFinished, this); |
+ } |
} |
_onMainFrameNavigated() { |