/* * Copyright 2010 Google Inc. * * 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. */ package com.google.gwt.cell.client; import com.google.gwt.cell.client.Cell.Context; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; /** * Tests for {@link TextInputCell}. */ public class TextInputCellTest extends EditableCellTestBase<String, TextInputCell.ViewData> { public void testOnBrowserEventChange() { NativeEvent event = Document.get().createChangeEvent(); TextInputCell.ViewData expected = new TextInputCell.ViewData("oldValue"); expected.setLastValue("hello"); expected.setCurrentValue("hello"); testOnBrowserEvent(getExpectedInnerHtml(), event, "oldValue", null, "hello", expected); } public void testOnBrowserEventKeyUp() { NativeEvent event = Document.get().createKeyUpEvent(false, false, false, false, 0); TextInputCell.ViewData expected = new TextInputCell.ViewData("oldValue"); expected.setCurrentValue("hello"); testOnBrowserEvent(getExpectedInnerHtml(), event, "oldValue", null, null, expected); } /** * Test rendering the cell with a malicious value. */ public void testRenderUnsafeHtml() { Cell<String> cell = createCell(); SafeHtmlBuilder sb = new SafeHtmlBuilder(); Context context = new Context(0, 0, null); cell.render(context, "<script>malicious</script>", sb); assertEquals( "<input type=\"text\" value=\"<script>malicious</script>\" tabindex=\"-1\">" + "</input>", sb.toSafeHtml().asString()); } @Override protected TextInputCell createCell() { return new TextInputCell(); } @Override protected String createCellValue() { return "hello"; } @Override protected TextInputCell.ViewData createCellViewData() { return new TextInputCell.ViewData("newValue"); } @Override protected boolean dependsOnSelection() { return false; } @Override protected String[] getConsumedEvents() { return new String[]{"change", "keyup", "keydown", "focus", "blur"}; } @Override protected String getExpectedInnerHtml() { return "<input type=\"text\" value=\"hello\" tabindex=\"-1\"></input>"; } @Override protected String getExpectedInnerHtmlNull() { return "<input type=\"text\" tabindex=\"-1\"></input>"; } @Override protected String getExpectedInnerHtmlViewData() { return "<input type=\"text\" value=\"newValue\" tabindex=\"-1\"></input>"; } }