// Copyright 2008 The Closure Library Authors. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS-IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /** * @fileoverview Mock of goog.editor.field. * * @author robbyw@google.com (Robby Walker) */ goog.setTestOnly('goog.testing.editor.FieldMock'); goog.provide('goog.testing.editor.FieldMock'); goog.require('goog.dom'); goog.require('goog.dom.Range'); goog.require('goog.editor.Field'); goog.require('goog.testing.LooseMock'); goog.require('goog.testing.mockmatchers'); /** * Mock of goog.editor.Field. * @param {Window=} opt_window Window the field would edit. Defaults to * {@code window}. * @param {Window=} opt_appWindow "AppWindow" of the field, which can be * different from {@code opt_window} when mocking a field that uses an * iframe. Defaults to {@code opt_window}. * @param {goog.dom.AbstractRange=} opt_range An object (mock or real) to be * returned by getRange(). If omitted, a new goog.dom.Range is created * from the window every time getRange() is called. * @constructor * @extends {goog.testing.LooseMock} * @suppress {missingProperties} Mocks do not fit in the type system well. * @final */ goog.testing.editor.FieldMock = function(opt_window, opt_appWindow, opt_range) { goog.testing.LooseMock.call(this, goog.editor.Field); opt_window = opt_window || window; opt_appWindow = opt_appWindow || opt_window; this.getAppWindow(); this.$anyTimes(); this.$returns(opt_appWindow); this.getRange(); this.$anyTimes(); this.$does(function() { return opt_range || goog.dom.Range.createFromWindow(opt_window); }); this.getEditableDomHelper(); this.$anyTimes(); this.$returns(goog.dom.getDomHelper(opt_window.document)); this.usesIframe(); this.$anyTimes(); this.getBaseZindex(); this.$anyTimes(); this.$returns(0); this.restoreSavedRange(goog.testing.mockmatchers.ignoreArgument); this.$anyTimes(); this.$does(function(range) { if (range) { range.restore(); } this.focus(); }); // These methods cannot be set on the prototype, because the prototype // gets stepped on by the mock framework. var inModalMode = false; /** * @return {boolean} Whether we're in modal interaction mode. */ this.inModalMode = function() { return inModalMode; }; /** * @param {boolean} mode Sets whether we're in modal interaction mode. */ this.setModalMode = function(mode) { inModalMode = mode; }; var uneditable = false; /** * @return {boolean} Whether the field is uneditable. */ this.isUneditable = function() { return uneditable; }; /** * @param {boolean} isUneditable Whether the field is uneditable. */ this.setUneditable = function(isUneditable) { uneditable = isUneditable; }; }; goog.inherits(goog.testing.editor.FieldMock, goog.testing.LooseMock);