OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 // This module implements a wrapper for a guestview that manages its | 5 // This module implements a wrapper for a guestview that manages its |
6 // creation, attaching, and destruction. | 6 // creation, attaching, and destruction. |
7 | 7 |
8 var EventBindings = require('event_bindings'); | 8 var EventBindings = require('event_bindings'); |
9 var GuestViewInternal = | 9 var GuestViewInternal = |
10 require('binding').Binding.create('guestViewInternal').generate(); | 10 require('binding').Binding.create('guestViewInternal').generate(); |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 this.handleCallback(callback); | 213 this.handleCallback(callback); |
214 return; | 214 return; |
215 } | 215 } |
216 | 216 |
217 if (this.state == GUEST_STATE_START) { | 217 if (this.state == GUEST_STATE_START) { |
218 // destroy() does nothing in this case. | 218 // destroy() does nothing in this case. |
219 this.handleCallback(callback); | 219 this.handleCallback(callback); |
220 return; | 220 return; |
221 } | 221 } |
222 | 222 |
| 223 // If this guest is attached, then detach it first. |
| 224 if (!!this.internalInstanceId) { |
| 225 GuestViewInternalNatives.DetachGuest(this.internalInstanceId); |
| 226 } |
| 227 |
223 GuestViewInternal.destroyGuest(this.id, | 228 GuestViewInternal.destroyGuest(this.id, |
224 this.handleCallback.bind(this, callback)); | 229 this.handleCallback.bind(this, callback)); |
225 | 230 |
226 // Reset the state of the destroyed guest; | 231 // Reset the state of the destroyed guest; |
227 this.contentWindow = null; | 232 this.contentWindow = null; |
228 this.id = 0; | 233 this.id = 0; |
229 this.internalInstanceId = 0; | 234 this.internalInstanceId = 0; |
230 this.state = GUEST_STATE_START; | 235 this.state = GUEST_STATE_START; |
231 if (ResizeEvent.hasListener(this.callOnResize)) { | 236 if (ResizeEvent.hasListener(this.callOnResize)) { |
232 ResizeEvent.removeListener(this.callOnResize); | 237 ResizeEvent.removeListener(this.callOnResize); |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 }; | 322 }; |
318 | 323 |
319 // Returns the ID for this guestview. | 324 // Returns the ID for this guestview. |
320 GuestView.prototype.getId = function() { | 325 GuestView.prototype.getId = function() { |
321 var internal = privates(this).internal; | 326 var internal = privates(this).internal; |
322 return internal.id; | 327 return internal.id; |
323 }; | 328 }; |
324 | 329 |
325 // Exports | 330 // Exports |
326 exports.GuestView = GuestView; | 331 exports.GuestView = GuestView; |
OLD | NEW |