Adding mapbox-gl branch
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
// 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.
|
||||
|
||||
goog.provide('goog.editor.ClickToEditWrapperTest');
|
||||
goog.setTestOnly('goog.editor.ClickToEditWrapperTest');
|
||||
|
||||
goog.require('goog.dom');
|
||||
goog.require('goog.dom.Range');
|
||||
goog.require('goog.editor.ClickToEditWrapper');
|
||||
goog.require('goog.editor.SeamlessField');
|
||||
goog.require('goog.testing.MockClock');
|
||||
goog.require('goog.testing.events');
|
||||
goog.require('goog.testing.jsunit');
|
||||
goog.require('goog.userAgent');
|
||||
goog.require('goog.userAgent.product');
|
||||
|
||||
var FIELD;
|
||||
var CLOCK;
|
||||
var HTML;
|
||||
|
||||
function setUp() {
|
||||
HTML = goog.dom.getElement('root').innerHTML;
|
||||
CLOCK = new goog.testing.MockClock(true);
|
||||
|
||||
// The following 3 lines are to get around an IE bug where it says
|
||||
// 'Incompatible markup pointers for this operation'.
|
||||
// Must be done in the setup, not teardown, or else it won't take effect for
|
||||
// the first test that is run, or any test that runs immediately after a
|
||||
// "breaking async" message from the jsunit framework.
|
||||
goog.dom.Range.clearSelection();
|
||||
window.blur();
|
||||
window.focus();
|
||||
}
|
||||
|
||||
function setUpField(opt_isBlended) {
|
||||
FIELD = opt_isBlended ? new goog.editor.SeamlessField('testField') :
|
||||
new goog.editor.SeamlessField('testField');
|
||||
|
||||
(new goog.editor.ClickToEditWrapper(FIELD));
|
||||
|
||||
goog.dom.Range.clearSelection();
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
if (FIELD) {
|
||||
FIELD.dispose();
|
||||
}
|
||||
|
||||
CLOCK.dispose();
|
||||
|
||||
goog.dom.getElement('root').innerHTML = HTML;
|
||||
}
|
||||
|
||||
function testClickToEdit(opt_isBlended) {
|
||||
setUpField(opt_isBlended);
|
||||
|
||||
var text = goog.dom.getElement('testField').firstChild;
|
||||
goog.dom.Range.createFromNodes(text, 4, text, 8).select();
|
||||
|
||||
goog.testing.events.fireClickSequence(text.parentNode);
|
||||
|
||||
assertFalse('Field should not be made editable immediately after clicking',
|
||||
FIELD.isLoaded());
|
||||
CLOCK.tick(1);
|
||||
assertTrue('Field should be editable', FIELD.isLoaded());
|
||||
|
||||
var dom = FIELD.getEditableDomHelper();
|
||||
var selection = goog.dom.Range.createFromWindow(dom.getWindow());
|
||||
|
||||
var body = FIELD.getElement();
|
||||
text = body.firstChild;
|
||||
|
||||
assertEquals('Wrong start node', text, selection.getStartNode());
|
||||
assertEquals('Wrong end node', text, selection.getEndNode());
|
||||
assertEquals('Wrong start offset', 4, selection.getStartOffset());
|
||||
assertEquals('Wrong end offset', 8, selection.getEndOffset());
|
||||
}
|
||||
|
||||
function testBlendedClickToEdit() {
|
||||
testClickToEdit(true);
|
||||
}
|
||||
|
||||
|
||||
function testClickToEditWithAnchor(opt_isBlended) {
|
||||
// We bail out if we are running on chrome+winxp because of flaky selenium
|
||||
// issues. TODO(user): Remove this assertion once we start running on the
|
||||
// JsUnit farm.
|
||||
if (goog.userAgent.product.CHROME && goog.userAgent.WINDOWS) {
|
||||
return;
|
||||
}
|
||||
setUpField(opt_isBlended);
|
||||
|
||||
goog.dom.getElement('testAnchor').focus();
|
||||
goog.testing.events.fireClickSequence(goog.dom.getElement('testAnchor'));
|
||||
|
||||
CLOCK.tick(1);
|
||||
assertTrue('Field should be editable', FIELD.isLoaded());
|
||||
|
||||
var dom = FIELD.getEditableDomHelper();
|
||||
var selection = goog.dom.Range.createFromWindow(dom.getWindow());
|
||||
|
||||
// TODO(brndn): the location of the cursor is not yet specified by the W3C
|
||||
// Editing APIs (https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html).
|
||||
// See b/15678403.
|
||||
var body = FIELD.getElement();
|
||||
var text = body.firstChild;
|
||||
var link = dom.getElementsByTagNameAndClass('A', null, body)[0].firstChild;
|
||||
var isIELessThan9OrWebkit = goog.userAgent.WEBKIT ||
|
||||
(goog.userAgent.IE && !goog.userAgent.isVersionOrHigher(9));
|
||||
assertEquals('Wrong start node',
|
||||
isIELessThan9OrWebkit ? text : link, selection.getStartNode());
|
||||
assertEquals('Wrong start offset',
|
||||
isIELessThan9OrWebkit ? 17 : 0, selection.getStartOffset());
|
||||
assertEquals('Wrong end node',
|
||||
isIELessThan9OrWebkit ? text : link, selection.getEndNode());
|
||||
assertEquals('Wrong end offset',
|
||||
isIELessThan9OrWebkit ? 17 : 0, selection.getEndOffset());
|
||||
}
|
||||
|
||||
function testBlendedClickToEditWithAnchor() {
|
||||
testClickToEditWithAnchor(true);
|
||||
}
|
||||
Reference in New Issue
Block a user