| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 'use strict'; | 5 'use strict'; |
| 6 | 6 |
| 7 /** Idle time in ms before the UI is hidden. */ | 7 /** Idle time in ms before the UI is hidden. */ |
| 8 var HIDE_TIMEOUT = 2000; | 8 var HIDE_TIMEOUT = 2000; |
| 9 /** Time in ms after force hide before toolbar is shown again. */ | 9 /** Time in ms after force hide before toolbar is shown again. */ |
| 10 var FORCE_HIDE_TIMEOUT = 1000; | 10 var FORCE_HIDE_TIMEOUT = 1000; |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 this.sideToolbarAllowedOnly_ = false; | 61 this.sideToolbarAllowedOnly_ = false; |
| 62 this.sideToolbarAllowedOnlyTimer_ = null; | 62 this.sideToolbarAllowedOnlyTimer_ = null; |
| 63 | 63 |
| 64 this.window_.addEventListener('resize', this.resizeDropdowns_.bind(this)); | 64 this.window_.addEventListener('resize', this.resizeDropdowns_.bind(this)); |
| 65 this.resizeDropdowns_(); | 65 this.resizeDropdowns_(); |
| 66 } | 66 } |
| 67 | 67 |
| 68 ToolbarManager.prototype = { | 68 ToolbarManager.prototype = { |
| 69 | 69 |
| 70 showToolbarsForMouseMove: function(e) { | 70 showToolbarsForMouseMove: function(e) { |
| 71 this.isMouseNearTopToolbar_ = isMouseNearTopToolbar(e); | 71 this.isMouseNearTopToolbar_ = this.toolbar_ && isMouseNearTopToolbar(e); |
| 72 this.isMouseNearSideToolbar_ = isMouseNearSideToolbar(e); | 72 this.isMouseNearSideToolbar_ = isMouseNearSideToolbar(e); |
| 73 | 73 |
| 74 // Allow the top toolbar to be shown if the mouse moves away from the side | 74 // Allow the top toolbar to be shown if the mouse moves away from the side |
| 75 // toolbar (as long as the timeout has elapsed). | 75 // toolbar (as long as the timeout has elapsed). |
| 76 if (!this.isMouseNearSideToolbar_ && !this.sideToolbarAllowedOnlyTimer_) | 76 if (!this.isMouseNearSideToolbar_ && !this.sideToolbarAllowedOnlyTimer_) |
| 77 this.sideToolbarAllowedOnly_ = false; | 77 this.sideToolbarAllowedOnly_ = false; |
| 78 | 78 |
| 79 // Allow the top toolbar to be shown if the mouse moves to the top edge. | 79 // Allow the top toolbar to be shown if the mouse moves to the top edge. |
| 80 if (this.isMouseNearTopToolbar_) | 80 if (this.isMouseNearTopToolbar_) |
| 81 this.sideToolbarAllowedOnly_ = false; | 81 this.sideToolbarAllowedOnly_ = false; |
| 82 | 82 |
| 83 // Show the toolbars if the mouse is near the top or right of the screen or | 83 // Show the toolbars if the mouse is near the top or right of the screen or |
| 84 // if the mouse moved fast. | 84 // if the mouse moved fast. |
| 85 if (this.isMouseNearTopToolbar_ || this.isMouseNearSideToolbar_ || | 85 if (this.isMouseNearTopToolbar_ || this.isMouseNearSideToolbar_ || |
| 86 isHighVelocityMouseMove(e)) { | 86 isHighVelocityMouseMove(e)) { |
| 87 if (this.sideToolbarAllowedOnly_) | 87 if (this.sideToolbarAllowedOnly_) |
| 88 this.zoomToolbar_.show(); | 88 this.zoomToolbar_.show(); |
| 89 else | 89 else |
| 90 this.showToolbars(); | 90 this.showToolbars(); |
| 91 } | 91 } |
| 92 this.hideToolbarsAfterTimeout(); | 92 this.hideToolbarsAfterTimeout(); |
| 93 }, | 93 }, |
| 94 | 94 |
| 95 /** | 95 /** |
| 96 * Display both UI toolbars. | 96 * Display both UI toolbars. |
| 97 */ | 97 */ |
| 98 showToolbars: function() { | 98 showToolbars: function() { |
| 99 this.toolbar_.show(); | 99 if (this.toolbar_) |
| 100 this.toolbar_.show(); |
| 100 this.zoomToolbar_.show(); | 101 this.zoomToolbar_.show(); |
| 101 }, | 102 }, |
| 102 | 103 |
| 103 /** | 104 /** |
| 104 * Check if the toolbars are able to be closed, and close them if they are. | 105 * Check if the toolbars are able to be closed, and close them if they are. |
| 105 * Toolbars may be kept open based on mouse/keyboard activity and active | 106 * Toolbars may be kept open based on mouse/keyboard activity and active |
| 106 * elements. | 107 * elements. |
| 107 */ | 108 */ |
| 108 hideToolbarsIfAllowed: function() { | 109 hideToolbarsIfAllowed: function() { |
| 109 if (!(this.isMouseNearTopToolbar_ || this.isMouseNearSideToolbar_ || | 110 if (this.isMouseNearSideToolbar_ || this.isMouseNearTopToolbar_) |
| 110 this.toolbar_.shouldKeepOpen())) { | 111 return; |
| 112 |
| 113 if (this.toolbar_ && this.toolbar_.shouldKeepOpen()) |
| 114 return; |
| 115 |
| 116 if (this.toolbar_) |
| 111 this.toolbar_.hide(); | 117 this.toolbar_.hide(); |
| 112 this.zoomToolbar_.hide(); | 118 this.zoomToolbar_.hide(); |
| 113 } | |
| 114 }, | 119 }, |
| 115 | 120 |
| 116 /** | 121 /** |
| 117 * Hide the toolbar after the HIDE_TIMEOUT has elapsed. | 122 * Hide the toolbar after the HIDE_TIMEOUT has elapsed. |
| 118 */ | 123 */ |
| 119 hideToolbarsAfterTimeout: function() { | 124 hideToolbarsAfterTimeout: function() { |
| 120 if (this.toolbarTimeout_) | 125 if (this.toolbarTimeout_) |
| 121 clearTimeout(this.toolbarTimeout_); | 126 clearTimeout(this.toolbarTimeout_); |
| 122 this.toolbarTimeout_ = | 127 this.toolbarTimeout_ = |
| 123 setTimeout(this.hideToolbarsIfAllowed.bind(this), HIDE_TIMEOUT); | 128 setTimeout(this.hideToolbarsIfAllowed.bind(this), HIDE_TIMEOUT); |
| 124 }, | 129 }, |
| 125 | 130 |
| 126 /** | 131 /** |
| 127 * Hide the 'topmost' layer of toolbars. Hides any dropdowns that are open, or | 132 * Hide the 'topmost' layer of toolbars. Hides any dropdowns that are open, or |
| 128 * hides the basic toolbars otherwise. | 133 * hides the basic toolbars otherwise. |
| 129 */ | 134 */ |
| 130 hideSingleToolbarLayer: function() { | 135 hideSingleToolbarLayer: function() { |
| 131 if (!this.toolbar_.hideDropdowns()) | 136 if (!this.toolbar_ || !this.toolbar_.hideDropdowns()) |
| 132 this.hideToolbarsIfAllowed(); | 137 this.hideToolbarsIfAllowed(); |
| 133 }, | 138 }, |
| 134 | 139 |
| 135 /** | 140 /** |
| 136 * Hide the top toolbar and keep it hidden until both: | 141 * Hide the top toolbar and keep it hidden until both: |
| 137 * - The mouse is moved away from the right side of the screen | 142 * - The mouse is moved away from the right side of the screen |
| 138 * - 1 second has passed. | 143 * - 1 second has passed. |
| 139 * | 144 * |
| 140 * The top toolbar can be immediately re-opened by moving the mouse to the top | 145 * The top toolbar can be immediately re-opened by moving the mouse to the top |
| 141 * of the screen. | 146 * of the screen. |
| 142 */ | 147 */ |
| 143 forceHideTopToolbar: function() { | 148 forceHideTopToolbar: function() { |
| 149 if (!this.toolbar_) |
| 150 return; |
| 144 this.toolbar_.hide(); | 151 this.toolbar_.hide(); |
| 145 this.sideToolbarAllowedOnly_ = true; | 152 this.sideToolbarAllowedOnly_ = true; |
| 146 this.sideToolbarAllowedOnlyTimer_ = this.window_.setTimeout(function() { | 153 this.sideToolbarAllowedOnlyTimer_ = this.window_.setTimeout(function() { |
| 147 this.sideToolbarAllowedOnlyTimer_ = null; | 154 this.sideToolbarAllowedOnlyTimer_ = null; |
| 148 }.bind(this), FORCE_HIDE_TIMEOUT); | 155 }.bind(this), FORCE_HIDE_TIMEOUT); |
| 149 }, | 156 }, |
| 150 | 157 |
| 151 /** | 158 /** |
| 152 * Updates the size of toolbar dropdowns based on the positions of the rest of | 159 * Updates the size of toolbar dropdowns based on the positions of the rest of |
| 153 * the UI. | 160 * the UI. |
| 154 * @private | 161 * @private |
| 155 */ | 162 */ |
| 156 resizeDropdowns_: function() { | 163 resizeDropdowns_: function() { |
| 164 if (!this.toolbar_) |
| 165 return; |
| 157 var lowerBound = this.window_.innerHeight - this.zoomToolbar_.clientHeight; | 166 var lowerBound = this.window_.innerHeight - this.zoomToolbar_.clientHeight; |
| 158 this.toolbar_.setDropdownLowerBound(lowerBound); | 167 this.toolbar_.setDropdownLowerBound(lowerBound); |
| 159 } | 168 } |
| 160 }; | 169 }; |
| OLD | NEW |