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