| // Copyright 2011 Google Inc. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| |
| /*--- |
| info: | |
| If a particular API exists (document.createElement, as happens to |
| exist in a browser environment), check if the form objects it makes |
| obey the constraints that even host objects must obey. In this |
| case, that if defineProperty seems to have successfully installed a |
| non-configurable getter, that it is still there. |
| es5id: 15.2.3.6_A1 |
| description: Do getters on HTMLFormElements disappear? |
| ---*/ |
| |
| function getter() { |
| return 'gotten'; |
| } |
| |
| if (typeof document !== 'undefined' && |
| typeof document.createElement === 'function') { |
| var f = document.createElement("form"); |
| var refused = false; |
| try { |
| Object.defineProperty(f, 'foo', { |
| get: getter, |
| set: void 0 |
| }); |
| } catch (err) { |
| // A host object may refuse to install the getter |
| refused = true; |
| } |
| if (!refused) { |
| var desc = Object.getOwnPropertyDescriptor(f, 'foo'); |
| if (desc.get !== getter) { |
| $ERROR('Getter on HTMLFormElement disappears'); |
| } |
| } |
| } |