aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/editor/plugins/linkbubble_test.html
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/editor/plugins/linkbubble_test.html')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/editor/plugins/linkbubble_test.html373
1 files changed, 0 insertions, 373 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/editor/plugins/linkbubble_test.html b/contexts/data/lib/closure-library/closure/goog/editor/plugins/linkbubble_test.html
deleted file mode 100644
index f755940..0000000
--- a/contexts/data/lib/closure-library/closure/goog/editor/plugins/linkbubble_test.html
+++ /dev/null
@@ -1,373 +0,0 @@
-<!DOCTYPE html>
-<!--
- All Rights Reserved.
-
- @author tildahl@google.com (Michael Tildahl)
--->
-<html>
-<!--
-Copyright 2008 The Closure Library Authors. All Rights Reserved.
-
-Use of this source code is governed by the Apache License, Version 2.0.
-See the COPYING file for details.
--->
-<head>
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
-<title>goog.editor.plugins.LinkBubble Tests</title>
-<script src="../../base.js"></script>
-<script>
- goog.require('goog.dom');
- goog.require('goog.dom.TagName');
- goog.require('goog.editor.Link');
- goog.require('goog.events.BrowserEvent');
- goog.require('goog.events.Event');
- goog.require('goog.events.KeyCodes');
- goog.require('goog.style');
- goog.require('goog.testing.FunctionMock');
- goog.require('goog.testing.editor.FieldMock');
- goog.require('goog.testing.editor.TestHelper');
- goog.require('goog.testing.events');
- goog.require('goog.testing.jsunit');
- goog.require('goog.userAgent');
- goog.require('goog.editor.plugins.LinkBubble');
-</script>
-</head>
-<body>
-
-<div id="field"><a href="http://www.google.com/">Google</a></div>
-
-<script>
-
-var fieldDiv = goog.dom.$('field');
-var FIELDMOCK;
-var linkBubble;
-var link;
-var mockWindowOpen;
-var stubs = new goog.testing.PropertyReplacer();
-var testHelper = new goog.testing.editor.TestHelper(
- goog.dom.getElement('field'));
-
-function setUp() {
- testHelper.setUpEditableElement();
- FIELDMOCK = new goog.testing.editor.FieldMock();
-
- linkBubble = new goog.editor.plugins.LinkBubble();
- linkBubble.fieldObject = FIELDMOCK;
-
- link = fieldDiv.firstChild;
-
- mockWindowOpen = new goog.testing.FunctionMock('open');
- stubs.set(window, 'open', mockWindowOpen);
-}
-
-function tearDown() {
- linkBubble.closeBubble();
- testHelper.tearDownEditableElement();
- stubs.reset();
-}
-
-function testLinkSelected() {
- FIELDMOCK.$replay();
- linkBubble.enable(FIELDMOCK);
- goog.dom.Range.createFromNodeContents(link).select();
- linkBubble.handleSelectionChange();
- assertBubble();
- FIELDMOCK.$verify();
-}
-
-function testLinkClicked() {
- FIELDMOCK.$replay();
- linkBubble.enable(FIELDMOCK);
- linkBubble.handleSelectionChange(createMouseEvent(link));
- assertBubble();
- FIELDMOCK.$verify();
-}
-
-function testImageLink() {
- FIELDMOCK.$replay();
- linkBubble.enable(FIELDMOCK);
- link.setAttribute('imageanchor', 1);
- linkBubble.handleSelectionChange(createMouseEvent(link));
- assertBubble();
- FIELDMOCK.$verify();
-}
-
-function closeBox() {
- var closeBox = goog.dom.getElementsByTagNameAndClass(goog.dom.TagName.DIV,
- 'tr_bubble_closebox');
- assertEquals('Should find only one close box', 1, closeBox.length);
- assertNotNull('Found close box', closeBox[0]);
- goog.testing.events.fireClickSequence(closeBox[0]);
-}
-
-function testCloseBox() {
- testLinkClicked();
- closeBox();
- assertNoBubble();
- FIELDMOCK.$verify();
-}
-
-function testChangeClicked() {
- FIELDMOCK.execCommand(goog.editor.Command.MODAL_LINK_EDITOR,
- new goog.editor.Link(link, false));
- FIELDMOCK.$registerArgumentListVerifier('execCommand', function(arr1, arr2) {
- return arr1.length == arr2.length &&
- arr1.length == 2 &&
- arr1[0] == goog.editor.Command.MODAL_LINK_EDITOR &&
- arr2[0] == goog.editor.Command.MODAL_LINK_EDITOR &&
- arr1[1] instanceof goog.editor.Link &&
- arr2[1] instanceof goog.editor.Link;
- });
- FIELDMOCK.$times(1);
- FIELDMOCK.$returns(true);
- FIELDMOCK.$replay();
- linkBubble.enable(FIELDMOCK);
-
- linkBubble.handleSelectionChange(createMouseEvent(link));
- assertBubble();
-
- goog.testing.events.fireClickSequence(
- goog.dom.$(goog.editor.plugins.LinkBubble.CHANGE_LINK_ID_));
- assertNoBubble();
- FIELDMOCK.$verify();
-}
-
-function testDeleteClicked() {
- FIELDMOCK.dispatchBeforeChange();
- FIELDMOCK.$times(1);
- FIELDMOCK.dispatchChange();
- FIELDMOCK.$times(1);
- FIELDMOCK.$replay();
- linkBubble.enable(FIELDMOCK);
-
- linkBubble.handleSelectionChange(createMouseEvent(link));
- assertBubble();
-
- goog.testing.events.fireClickSequence(
- goog.dom.$(goog.editor.plugins.LinkBubble.DELETE_LINK_ID_));
- var element = goog.userAgent.GECKO ? document.body : fieldDiv;
- assertNotEquals('Link removed', element.firstChild.nodeName,
- goog.dom.TagName.A);
- assertNoBubble();
- FIELDMOCK.$verify();
-}
-
-function testActionClicked() {
- var SPAN = 'actionSpanId';
- var LINK = 'actionLinkId';
- var toShowCount = 0;
- var actionCount = 0;
-
- var linkAction = new goog.editor.plugins.LinkBubble.Action(
- SPAN, LINK, 'message',
- function() {
- toShowCount++;
- return toShowCount == 1; // Show it the first time.
- },
- function() {
- actionCount++;
- });
-
- linkBubble = new goog.editor.plugins.LinkBubble(linkAction);
- linkBubble.fieldObject = FIELDMOCK;
- FIELDMOCK.$replay();
- linkBubble.enable(FIELDMOCK);
-
- // The first time the bubble is shown, show our custom action.
- linkBubble.handleSelectionChange(createMouseEvent(link));
- assertBubble();
- assertEquals('Should check showing the action', 1, toShowCount);
- assertEquals('Action should not have fired yet', 0, actionCount);
-
- assertTrue('Action should be visible 1st time', goog.style.isElementShown(
- goog.dom.$(SPAN)));
- goog.testing.events.fireClickSequence(goog.dom.$(LINK));
-
- assertEquals('Should not check showing again yet', 1, toShowCount);
- assertEquals('Action should be fired', 1, actionCount);
-
- closeBox();
- assertNoBubble();
-
- // The action won't be shown the second time around.
- linkBubble.handleSelectionChange(createMouseEvent(link));
- assertBubble();
- assertEquals('Should check showing again', 2, toShowCount);
- assertEquals('Action should not fire again', 1, actionCount);
- assertFalse('Action should not be shown 2nd time', goog.style.isElementShown(
- goog.dom.$(SPAN)));
-
- FIELDMOCK.$verify();
-}
-
-function testLinkTextClicked() {
- mockWindowOpen('http://www.google.com/', '_blank', '');
- mockWindowOpen.$replay();
- FIELDMOCK.$replay();
- linkBubble.enable(FIELDMOCK);
-
- linkBubble.handleSelectionChange(createMouseEvent(link));
- assertBubble();
-
- goog.testing.events.fireClickSequence(
- goog.dom.$(goog.editor.plugins.LinkBubble.TEST_LINK_ID_));
-
- assertBubble();
- mockWindowOpen.$verify();
- FIELDMOCK.$verify();
-}
-
-function testLinkTextClickedCustomUrlFn() {
- mockWindowOpen('http://images.google.com/', '_blank', '');
- mockWindowOpen.$replay();
- FIELDMOCK.$replay();
- linkBubble.enable(FIELDMOCK);
-
- linkBubble.setTestLinkUrlFn(function(url) {
- return url.replace('www', 'images');
- });
-
- linkBubble.handleSelectionChange(createMouseEvent(link));
- assertBubble();
-
- goog.testing.events.fireClickSequence(
- goog.dom.$(goog.editor.plugins.LinkBubble.TEST_LINK_ID_));
-
- assertBubble();
- mockWindowOpen.$verify();
- FIELDMOCK.$verify();
-}
-
-/**
- * Urls with invalid schemes shouldn't be linkified.
- * @bug 2585360
- */
-function testDontLinkifyInvalidScheme() {
- mockWindowOpen.$replay();
- FIELDMOCK.$replay();
- linkBubble.enable(FIELDMOCK);
-
- var badLink = document.createElement('a');
- badLink.href = 'javascript:alert(1)';
- badLink.innerHTML = 'bad link';
-
- linkBubble.handleSelectionChange(createMouseEvent(badLink));
- assertBubble();
-
- // The link shouldn't exist at all, so this sequence should have no effect.
- goog.testing.events.fireClickSequence(
- goog.dom.$(goog.editor.plugins.LinkBubble.TEST_LINK_ID_));
-
- assertBubble();
- mockWindowOpen.$verify();
- FIELDMOCK.$verify();
-}
-
-function testIsSafeSchemeToOpen() {
- // Urls with no scheme at all are ok too since 'http://' will be prepended.
- var good = [
- 'http://google.com', 'http://google.com/', 'https://google.com',
- 'null@google.com', 'http://www.google.com', 'http://site.com',
- 'google.com', 'google', 'http://google', 'HTTP://GOOGLE.COM',
- 'HtTp://www.google.com'
- ];
-
- var bad = [
- 'javascript:google.com', 'httpp://google.com', 'data:foo',
- 'javascript:alert(\'hi\');', 'abc:def'
- ];
-
- for (var i = 0; i < good.length; i++) {
- assertTrue(good[i] + ' should have a safe scheme',
- linkBubble.isSafeSchemeToOpen_(good[i]));
- }
-
- for (i = 0; i < bad.length; i++) {
- assertFalse(bad[i] + ' should have an unsafe scheme',
- linkBubble.isSafeSchemeToOpen_(bad[i]));
- }
-}
-
-function testShouldOpenWithWhitelist() {
- linkBubble.setSafeToOpenSchemes(['abc']);
-
- assertTrue('Scheme should be safe',
- linkBubble.shouldOpenUrl('abc://google.com'));
- assertFalse('Scheme should be unsafe',
- linkBubble.shouldOpenUrl('http://google.com'));
-
- linkBubble.setBlockOpeningUnsafeSchemes(false);
- assertTrue('Non-whitelisted should now be safe after disabling blocking',
- linkBubble.shouldOpenUrl('http://google.com'));
-}
-
-/**
- * @bug 763211
- * @bug 2182147
- */
-function testLongUrlTestLinkAnchorTextCorrect() {
- FIELDMOCK.$replay();
- linkBubble.enable(FIELDMOCK);
-
- var longUrl = 'http://www.reallylonglinkthatshouldbetruncated' +
- 'becauseitistoolong.com';
- var truncatedLongUrl = goog.string.truncateMiddle(longUrl, 48);
-
- var longLink = document.createElement('a');
- longLink.href = longUrl;
- longLink.innerHTML = 'Google';
- fieldDiv.appendChild(longLink);
-
- linkBubble.handleSelectionChange(createMouseEvent(longLink));
- assertBubble();
-
- var testLinkEl = goog.dom.$(goog.editor.plugins.LinkBubble.TEST_LINK_ID_);
- assertEquals(
- 'The test link\'s anchor text should be the truncated URL.',
- truncatedLongUrl,
- testLinkEl.innerHTML);
-
- fieldDiv.removeChild(longLink);
- FIELDMOCK.$verify();
-}
-
-/**
- * @bug 2416024
- */
-function testOverridingCreateBubbleContentsDoesntNpeGetTargetUrl() {
- FIELDMOCK.$replay();
- linkBubble.enable(FIELDMOCK);
-
- stubs.set(linkBubble, 'createBubbleContents',
- function(elem) {
- // getTargetUrl would cause an NPE if urlUtil_ wasn't defined yet.
- linkBubble.getTargetUrl();
- });
- assertNotThrows('Accessing this.urlUtil_ should not NPE',
- goog.bind(linkBubble.handleSelectionChange,
- linkBubble, createMouseEvent(link)));
-
- FIELDMOCK.$verify();
-}
-
-function assertBubble() {
- assertTrue('Link bubble visible', linkBubble.isVisible());
- assertNotNull('Link bubble created',
- goog.dom.$(goog.editor.plugins.LinkBubble.LINK_DIV_ID_));
-}
-
-function assertNoBubble() {
- assertFalse('Link bubble not visible', linkBubble.isVisible());
- assertNull('Link bubble not created',
- goog.dom.$(goog.editor.plugins.LinkBubble.LINK_DIV_ID_));
-}
-
-function createMouseEvent(target) {
- var eventObj = new goog.events.Event(goog.events.EventType.MOUSEUP, target);
- eventObj.button = goog.events.BrowserEvent.MouseButton.LEFT;
-
- return new goog.events.BrowserEvent(eventObj, target);
-}
-</script>
-</body>
-</html>