diff options
author | Artur Signell <artur@vaadin.com> | 2016-08-17 23:02:37 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2016-08-18 11:03:05 +0000 |
commit | 0081286c8d05c3751803181230092bd4b1e769f7 (patch) | |
tree | 654556f869e08289a2b3099174c2f4c1e759a37a /client | |
parent | c9f95347c3d601ab45d49283c1463271f3fc66ab (diff) | |
download | vaadin-framework-0081286c8d05c3751803181230092bd4b1e769f7.tar.gz vaadin-framework-0081286c8d05c3751803181230092bd4b1e769f7.zip |
Remove IE8-IE10 client side code
Change-Id: I2ca0b41c3cc2ed851646ced2e0693a93b1853c95
Diffstat (limited to 'client')
41 files changed, 159 insertions, 1181 deletions
diff --git a/client/src/main/java/com/vaadin/client/BrowserInfo.java b/client/src/main/java/com/vaadin/client/BrowserInfo.java index 6a9a7a6508..01bb7188bb 100644 --- a/client/src/main/java/com/vaadin/client/BrowserInfo.java +++ b/client/src/main/java/com/vaadin/client/BrowserInfo.java @@ -253,14 +253,17 @@ public class BrowserInfo { return browserDetails.isSafari(); } + @Deprecated public boolean isIE8() { return isIE() && getBrowserMajorVersion() == 8; } + @Deprecated public boolean isIE9() { return isIE() && getBrowserMajorVersion() == 9; } + @Deprecated public boolean isIE10() { return isIE() && getBrowserMajorVersion() == 10; } @@ -517,3 +520,4 @@ public class BrowserInfo { return (getBrowserMajorVersion() > majorVersion); } } + diff --git a/client/src/main/java/com/vaadin/client/LayoutManager.java b/client/src/main/java/com/vaadin/client/LayoutManager.java index 4995c9cb70..f29bc0e01d 100644 --- a/client/src/main/java/com/vaadin/client/LayoutManager.java +++ b/client/src/main/java/com/vaadin/client/LayoutManager.java @@ -162,8 +162,8 @@ public class LayoutManager { } /** - * Assigns a measured size to an element. Method defined as protected to - * allow separate implementation for IE8. + * Assigns a measured size to an element. Method defined as protected for + * legacy reasons. * * @param element * the dom element to attach the measured size to @@ -182,8 +182,8 @@ public class LayoutManager { }-*/; /** - * Gets the measured size for an element. Method defined as protected to - * allow separate implementation for IE8. + * Gets the measured size for an element. Method defined as protected for + * legacy reasons. * * @param element * The element to get measured size for @@ -281,8 +281,8 @@ public class LayoutManager { /** * Called once per iteration in the layout loop before size calculations so - * different browsers quirks can be handled. Mainly this is currently for - * the IE8 permutation. + * different browsers quirks can be handled. Mainly this exists for legacy + * reasons. */ protected void performBrowserLayoutHacks() { // Permutations implement this @@ -600,8 +600,6 @@ public class LayoutManager { } Profiler.leave("layout PostLayoutListener"); - cleanMeasuredSizes(); - getLogger().info("Total layout phase time: " + totalDuration.elapsedMillis() + "ms"); } @@ -800,8 +798,7 @@ public class LayoutManager { private void setNeedsOverflowFix(ComponentConnector connector) { // IE9 doesn't need the original fix, but for some reason it needs this - if (BrowserInfo.get().requiresOverflowAutoFix() - || BrowserInfo.get().isIE9()) { + if (BrowserInfo.get().requiresOverflowAutoFix()) { ComponentConnector scrollingBoundary = currentDependencyTree .getScrollingBoundary(connector); if (scrollingBoundary != null) { @@ -1822,12 +1819,6 @@ public class LayoutManager { everythingNeedsMeasure = true; } - /** - * Clean measured sizes which are no longer needed. Only for IE8. - */ - public void cleanMeasuredSizes() { - } - private static Logger getLogger() { return Logger.getLogger(LayoutManager.class.getName()); } @@ -1855,3 +1846,4 @@ public class LayoutManager { return false; } } + diff --git a/client/src/main/java/com/vaadin/client/LayoutManagerIE8.java b/client/src/main/java/com/vaadin/client/LayoutManagerIE8.java deleted file mode 100644 index ad6aeb9c15..0000000000 --- a/client/src/main/java/com/vaadin/client/LayoutManagerIE8.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright 2000-2016 Vaadin Ltd. - * - * 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.vaadin.client; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import com.google.gwt.dom.client.Document; -import com.google.gwt.dom.client.Element; -import com.google.gwt.dom.client.Node; -import com.google.gwt.user.client.ui.RootPanel; - -/** - * Alternative MeasuredSize storage for IE8. Storing any information in a DOM - * element in IE8 seems to make the browser think the element has changed in a - * way that requires a reflow. To work around that, the MeasureData is instead - * stored in Map for IE8. - * - * This implementation is injected for IE8 by a replace-with definition in the - * GWT module. - * - * @author Vaadin Ltd - * @since 7.0.0 - */ -public class LayoutManagerIE8 extends LayoutManager { - - private Map<Element, MeasuredSize> measuredSizes = new HashMap<Element, MeasuredSize>(); - - // this method is needed to test for memory leaks (see - // LayoutMemoryUsageIE8ExtensionConnector) but can be private - private int getMeasuredSizesMapSize() { - return measuredSizes.size(); - } - - @Override - protected void setMeasuredSize(Element element, MeasuredSize measuredSize) { - if (measuredSize != null) { - measuredSizes.put(element, measuredSize); - } else { - measuredSizes.remove(element); - } - // clear any values that are saved to the element - if (super.getMeasuredSize(element, null) != null) { - super.setMeasuredSize(element, null); - } - } - - @Override - protected MeasuredSize getMeasuredSize(Element element, - MeasuredSize defaultSize) { - MeasuredSize measured = measuredSizes.get(element); - if (measured != null) { - return measured; - } else { - // check if saved to the element instead - MeasuredSize measuredSize = super.getMeasuredSize(element, null); - if (measuredSize != null) { - // move the value back to the map - setMeasuredSize(element, measuredSize); - return measuredSize; - } - return defaultSize; - } - } - - @Override - public void cleanMeasuredSizes() { - Profiler.enter("LayoutManager.cleanMeasuredSizes"); - - // #12688: IE8 was leaking memory when adding&removing components. - // Uses IE specific logic to figure if an element has been removed from - // DOM or not. For removed elements the measured size is stored within - // the element in case the element gets re-attached. - Node rootNode = Document.get().getBody(); - - Iterator<Element> i = measuredSizes.keySet().iterator(); - while (i.hasNext()) { - Element e = i.next(); - if (!rootNode.isOrHasChild(e)) { - // Store in element in case is still needed. - // Not attached, so reflow isn't a problem. - super.setMeasuredSize(e, measuredSizes.get(e)); - i.remove(); - } - } - - Profiler.leave("LayoutManager.cleanMeasuredSizes"); - } - - @Override - protected void performBrowserLayoutHacks() { - Profiler.enter("LayoutManagerIE8.performBrowserLayoutHacks"); - /* - * Fixes IE8 issues where IE8 sometimes forgets to update the size of - * the containing element. To force a reflow by modifying the magical - * zoom property. - */ - WidgetUtil.forceIE8Redraw(RootPanel.get().getElement()); - Profiler.leave("LayoutManagerIE8.performBrowserLayoutHacks"); - } -} diff --git a/client/src/main/java/com/vaadin/client/MouseEventDetailsBuilder.java b/client/src/main/java/com/vaadin/client/MouseEventDetailsBuilder.java index f91f33be01..50f9a98f6e 100644 --- a/client/src/main/java/com/vaadin/client/MouseEventDetailsBuilder.java +++ b/client/src/main/java/com/vaadin/client/MouseEventDetailsBuilder.java @@ -66,7 +66,7 @@ public class MouseEventDetailsBuilder { } else if (evt.getButton() == NativeEvent.BUTTON_MIDDLE) { mouseEventDetails.setButton(MouseButton.MIDDLE); } else { - // IE8 does not always report a button. Assume left. + // No button reported? Assume left. mouseEventDetails.setButton(MouseButton.LEFT); } mouseEventDetails.setAltKey(evt.getAltKey()); @@ -94,3 +94,4 @@ public class MouseEventDetailsBuilder { } } + diff --git a/client/src/main/java/com/vaadin/client/Util.java b/client/src/main/java/com/vaadin/client/Util.java index 13e6fd1cc0..8cfd8547a8 100644 --- a/client/src/main/java/com/vaadin/client/Util.java +++ b/client/src/main/java/com/vaadin/client/Util.java @@ -670,22 +670,6 @@ public class Util { } /** - * Performs a hack to trigger a re-layout in the IE8. This is usually - * necessary in cases where IE8 "forgets" to update child elements when they - * resize. - * - * @deprecated As of 7.4.0, use {@link WidgetUtil#forceIE8Redraw(Element)} - * instead. - * - * @param e - * The element to perform the hack on - */ - @Deprecated - public static final void forceIE8Redraw(Element e) { - WidgetUtil.forceIE8Redraw(e); - } - - /** * Performs a hack to trigger a re-layout in the IE browser. This is usually * necessary in cases where IE "forgets" to update child elements when they * resize. @@ -1276,3 +1260,4 @@ public class Util { return Logger.getLogger(Util.class.getName()); } } + diff --git a/client/src/main/java/com/vaadin/client/VTooltip.java b/client/src/main/java/com/vaadin/client/VTooltip.java index ea5bf02e39..21a3287442 100644 --- a/client/src/main/java/com/vaadin/client/VTooltip.java +++ b/client/src/main/java/com/vaadin/client/VTooltip.java @@ -83,14 +83,13 @@ public class VTooltip extends VOverlay { * @see ApplicationConnection#getVTooltip() */ public VTooltip() { - super(false, false, true); + super(false, false); // no autohide, not modal setStyleName(CLASSNAME); FlowPanel layout = new FlowPanel(); setWidget(layout); layout.add(em); DOM.setElementProperty(description, "className", CLASSNAME + "-text"); DOM.appendChild(layout.getElement(), description); - setSinkShadowEvents(true); // When a tooltip is shown, the content of the tooltip changes. With a // tooltip being a live-area, this change is notified to a assistive diff --git a/client/src/main/java/com/vaadin/client/WidgetUtil.java b/client/src/main/java/com/vaadin/client/WidgetUtil.java index 42e26c359e..1bd270dba3 100644 --- a/client/src/main/java/com/vaadin/client/WidgetUtil.java +++ b/client/src/main/java/com/vaadin/client/WidgetUtil.java @@ -32,7 +32,6 @@ import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.dom.client.Node; import com.google.gwt.dom.client.NodeList; import com.google.gwt.dom.client.Style; -import com.google.gwt.dom.client.Style.Display; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.dom.client.Touch; import com.google.gwt.event.dom.client.KeyEvent; @@ -112,8 +111,6 @@ public class WidgetUtil { public static native Element getElementFromPoint(int clientX, int clientY) /*-{ var el = $wnd.document.elementFromPoint(clientX, clientY); - // Call elementFromPoint two times to make sure IE8 also returns something sensible if the application is running in an iframe - el = $wnd.document.elementFromPoint(clientX, clientY); if(el != null && el.nodeType == 3) { el = el.parentNode; } @@ -144,12 +141,6 @@ public class WidgetUtil { public static String escapeHTML(String html) { DOM.setInnerText(escapeHtmlHelper, html); String escapedText = DOM.getInnerHTML(escapeHtmlHelper); - if (BrowserInfo.get().isIE8()) { - // #7478 IE8 "incorrectly" returns "<br>" for newlines set using - // setInnerText. The same for " " which is converted to " " - escapedText = escapedText.replaceAll("<(BR|br)>", "\n"); - escapedText = escapedText.replaceAll(" ", " "); - } return escapedText; } @@ -545,7 +536,7 @@ public class WidgetUtil { public static int getRequiredWidth( com.google.gwt.dom.client.Element element) { int reqWidth = getRequiredWidthBoundingClientRect(element); - if (BrowserInfo.get().isIE() && !BrowserInfo.get().isIE8()) { + if (BrowserInfo.get().isIE()) { int csSize = getRequiredWidthComputedStyle(element); if (csSize == reqWidth + 1) { // If computed style reports one pixel larger than requiredWidth @@ -572,7 +563,7 @@ public class WidgetUtil { public static double getRequiredWidthDouble( com.google.gwt.dom.client.Element element) { double reqWidth = getRequiredWidthBoundingClientRectDouble(element); - if (BrowserInfo.get().isIE() && !BrowserInfo.get().isIE8()) { + if (BrowserInfo.get().isIE()) { double csWidth = getRequiredWidthComputedStyleDouble(element); if (csWidth > reqWidth && csWidth <= (reqWidth + 1)) { // IE9 rounds reqHeight to integers BUT sometimes reports wrong @@ -596,7 +587,7 @@ public class WidgetUtil { public static int getRequiredHeight( com.google.gwt.dom.client.Element element) { int reqHeight = getRequiredHeightBoundingClientRect(element); - if (BrowserInfo.get().isIE() && !BrowserInfo.get().isIE8()) { + if (BrowserInfo.get().isIE()) { int csSize = getRequiredHeightComputedStyle(element); if (csSize == reqHeight + 1) { // If computed style reports one pixel larger than @@ -623,7 +614,7 @@ public class WidgetUtil { public static double getRequiredHeightDouble( com.google.gwt.dom.client.Element element) { double reqHeight = getRequiredHeightBoundingClientRectDouble(element); - if (BrowserInfo.get().isIE() && !BrowserInfo.get().isIE8()) { + if (BrowserInfo.get().isIE()) { double csHeight = getRequiredHeightComputedStyleDouble(element); if (csHeight > reqHeight && csHeight <= (reqHeight + 1)) { // IE9 rounds reqHeight to integers BUT sometimes reports wrong @@ -693,7 +684,7 @@ public class WidgetUtil { return @com.vaadin.client.WidgetUtil::getRequiredHeightBoundingClientRectDouble(Lcom/google/gwt/dom/client/Element;)(element); } var height = parseFloat(heightPx); // Will automatically skip "px" suffix - var border = parseFloat(cs.borderTopWidth) + parseFloat(cs.borderBottomWidth); // Will automatically skip "px" suffix + var border = parseFloat(cs.borderTopWidth) + parseFloat(cs.borderBottomWidth); // Will automatically skip "px" suffix var padding = parseFloat(cs.paddingTop) + parseFloat(cs.paddingBottom); // Will automatically skip "px" suffix return height+border+padding; }-*/; @@ -898,20 +889,6 @@ public class WidgetUtil { } /** - * Performs a hack to trigger a re-layout in the IE8. This is usually - * necessary in cases where IE8 "forgets" to update child elements when they - * resize. - * - * @param e - * The element to perform the hack on - */ - public static final void forceIE8Redraw(Element e) { - if (BrowserInfo.get().isIE8()) { - forceIERedraw(e); - } - } - - /** * Performs a hack to trigger a re-layout in the IE browser. This is usually * necessary in cases where IE "forgets" to update child elements when they * resize. @@ -1259,25 +1236,9 @@ public class WidgetUtil { * @return the corresponding absolute URL as a string */ public static String getAbsoluteUrl(String url) { - if (BrowserInfo.get().isIE8()) { - // The hard way - must use innerHTML and attach to DOM in IE8 - DivElement divElement = Document.get().createDivElement(); - divElement.getStyle().setDisplay(Display.NONE); - - RootPanel.getBodyElement().appendChild(divElement); - divElement.setInnerHTML( - "<a href='" + escapeAttribute(url) + "' ></a>"); - - AnchorElement a = divElement.getChild(0).cast(); - String href = a.getHref(); - - RootPanel.getBodyElement().removeChild(divElement); - return href; - } else { - AnchorElement a = Document.get().createAnchorElement(); - a.setHref(url); - return a.getHref(); - } + AnchorElement a = Document.get().createAnchorElement(); + a.setHref(url); + return a.getHref(); } /** @@ -1681,7 +1642,6 @@ public class WidgetUtil { var cloneElement = element.cloneNode(false); cloneElement.style.boxSizing ="content-box"; parentElement.appendChild(cloneElement); - cloneElement.style.height = "10px"; // IE8 wants the height to be set to something... var heightWithBorder = cloneElement.offsetHeight; for (i=0; i< borderNames.length; i++) { cloneElement.style[borderNames[i]] = "0"; @@ -1732,14 +1692,6 @@ public class WidgetUtil { } private static double roundSize(double size, boolean roundUp) { - if (BrowserInfo.get().isIE8()) { - if (roundUp) { - return Math.ceil(size); - } else { - return (int) size; - } - } - double factor = getSubPixelRoundingFactor(); if (factor < 0 || size < 0) { return size; @@ -1823,3 +1775,4 @@ public class WidgetUtil { return integerPart + ((int) nrFractions) / divisor; } } + diff --git a/client/src/main/java/com/vaadin/client/communication/MessageHandler.java b/client/src/main/java/com/vaadin/client/communication/MessageHandler.java index c3adc61f5d..f3c84c39c3 100644 --- a/client/src/main/java/com/vaadin/client/communication/MessageHandler.java +++ b/client/src/main/java/com/vaadin/client/communication/MessageHandler.java @@ -614,8 +614,6 @@ public class MessageHandler { // Unregister all the old connectors that have now been removed unregisterRemovedConnectors( connectorHierarchyUpdateResult.detachedConnectorIds); - - getLayoutManager().cleanMeasuredSizes(); } private void updateCaptions( @@ -1374,7 +1372,7 @@ public class MessageHandler { if (connector instanceof AbstractConnector) { // optimization as the loop setting properties is very - // slow, especially on IE8 + // slow replaceState((AbstractConnector) connector, defaultState); } else { diff --git a/client/src/main/java/com/vaadin/client/connectors/JavaScriptRendererConnector.java b/client/src/main/java/com/vaadin/client/connectors/JavaScriptRendererConnector.java index 8217d89a68..0194678ef1 100644 --- a/client/src/main/java/com/vaadin/client/connectors/JavaScriptRendererConnector.java +++ b/client/src/main/java/com/vaadin/client/connectors/JavaScriptRendererConnector.java @@ -21,7 +21,6 @@ import java.util.Collection; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.JsArrayString; import com.google.gwt.dom.client.NativeEvent; -import com.vaadin.client.BrowserInfo; import com.vaadin.client.JavaScriptConnectorHelper; import com.vaadin.client.Util; import com.vaadin.client.communication.HasJavaScriptConnectorHelper; @@ -51,8 +50,7 @@ public class JavaScriptRendererConnector private final JavaScriptConnectorHelper helper = new JavaScriptConnectorHelper( this); - private final JavaScriptObject cellReferenceWrapper = createCellReferenceWrapper( - BrowserInfo.get().isIE8()); + private final JavaScriptObject cellReferenceWrapper = createCellReferenceWrapper(); @Override protected void init() { @@ -62,14 +60,9 @@ public class JavaScriptRendererConnector addGetRowKey(helper.getConnectorWrapper()); } - private static native JavaScriptObject createCellReferenceWrapper( - boolean isIE8) + private static native JavaScriptObject createCellReferenceWrapper() /*-{ var reference = {}; - if (isIE8) { - // IE8 only supports defineProperty for DOM objects - reference = $doc.createElement('div'); - } var setProperty = function(name, getter, setter) { var descriptor = { @@ -282,3 +275,4 @@ public class JavaScriptRendererConnector return helper; } } + diff --git a/client/src/main/java/com/vaadin/client/debug/internal/InfoSection.java b/client/src/main/java/com/vaadin/client/debug/internal/InfoSection.java index d0a66cd490..7abd83b43b 100644 --- a/client/src/main/java/com/vaadin/client/debug/internal/InfoSection.java +++ b/client/src/main/java/com/vaadin/client/debug/internal/InfoSection.java @@ -197,15 +197,9 @@ public class InfoSection implements Section { .getAtmosphereVersion(); String jsVersion = applicationConfiguration.getAtmosphereJSVersion(); - String themeVersion; - boolean themeOk; - if (com.vaadin.client.BrowserInfo.get().isIE8()) { - themeVersion = "<IE8 can't detect this>"; - themeOk = true; - } else { - themeVersion = getThemeVersion(); - themeOk = equalsEither(themeVersion, clientVersion, servletVersion); - } + String themeVersion = getThemeVersion(); + boolean themeOk = equalsEither(themeVersion, clientVersion, + servletVersion); boolean clientOk = equalsEither(clientVersion, servletVersion, themeVersion); @@ -318,3 +312,4 @@ public class InfoSection implements Section { } } + diff --git a/client/src/main/java/com/vaadin/client/debug/internal/theme/DebugWindowStyles.java b/client/src/main/java/com/vaadin/client/debug/internal/theme/DebugWindowStyles.java index 899ccf3643..1f19744252 100644 --- a/client/src/main/java/com/vaadin/client/debug/internal/theme/DebugWindowStyles.java +++ b/client/src/main/java/com/vaadin/client/debug/internal/theme/DebugWindowStyles.java @@ -27,7 +27,7 @@ public interface DebugWindowStyles extends ClientBundle { @NotStrict public CssResource css(); - // Can't embed because IE8 doesn't support datauri for fonts (images only) + // Could embed @Source("font.eot") @DoNotEmbed DataResource iconFontEot(); @@ -46,4 +46,4 @@ public interface DebugWindowStyles extends ClientBundle { @DoNotEmbed DataResource iconFontSvg(); -}
\ No newline at end of file +} diff --git a/client/src/main/java/com/vaadin/client/extensions/ResponsiveConnector.java b/client/src/main/java/com/vaadin/client/extensions/ResponsiveConnector.java index cc3fc7937c..d2b8d797b4 100644 --- a/client/src/main/java/com/vaadin/client/extensions/ResponsiveConnector.java +++ b/client/src/main/java/com/vaadin/client/extensions/ResponsiveConnector.java @@ -20,8 +20,6 @@ import java.util.logging.Level; import java.util.logging.Logger; import com.google.gwt.core.client.JavaScriptObject; -import com.google.gwt.dom.client.Element; -import com.vaadin.client.BrowserInfo; import com.vaadin.client.LayoutManager; import com.vaadin.client.ServerConnector; import com.vaadin.client.communication.StateChangeEvent; @@ -206,7 +204,6 @@ public class ResponsiveConnector extends AbstractExtensionConnector // Get all the rulesets from the stylesheet var theRules = new Array(); var IEOrEdge = @com.vaadin.client.BrowserInfo::get()().@com.vaadin.client.BrowserInfo::isIE()() || @com.vaadin.client.BrowserInfo::get()().@com.vaadin.client.BrowserInfo::isEdge()(); - var IE8 = @com.vaadin.client.BrowserInfo::get()().@com.vaadin.client.BrowserInfo::isIE8()(); try { if (sheet.cssRules) { @@ -221,18 +218,6 @@ public class ResponsiveConnector extends AbstractExtensionConnector return; } - // Special import handling for IE8 - if (IE8) { - try { - for(var i = 0, len = sheet.imports.length; i < len; i++) { - @com.vaadin.client.extensions.ResponsiveConnector::searchStylesheetForBreakPoints(Lcom/google/gwt/core/client/JavaScriptObject;)(sheet.imports[i]); - } - } catch(e) { - // This is added due to IE8 failing to handle imports of some sheets for unknown reason (throws a permission denied exception) - @com.vaadin.client.extensions.ResponsiveConnector::error(Ljava/lang/String;)("Failed to handle imports of CSS style sheet: " + sheet.href); - } - } - // Loop through the rulesets for(var i = 0, len = theRules.length; i < len; i++) { var rule = theRules[i]; @@ -353,8 +338,6 @@ public class ResponsiveConnector extends AbstractExtensionConnector int width = layoutManager.getOuterWidth(element); int height = layoutManager.getOuterHeight(element); - boolean forceRedraw = false; - String oldWidthRanges = currentWidthRanges; String oldHeightRanges = currentHeightRanges; @@ -363,7 +346,6 @@ public class ResponsiveConnector extends AbstractExtensionConnector if (!"".equals(currentWidthRanges)) { element.setAttribute("width-range", currentWidthRanges); - forceRedraw = true; } else { element.removeAttribute("width-range"); } @@ -373,15 +355,10 @@ public class ResponsiveConnector extends AbstractExtensionConnector if (!"".equals(currentHeightRanges)) { element.setAttribute("height-range", currentHeightRanges); - forceRedraw = true; } else { element.removeAttribute("height-range"); } - if (forceRedraw) { - forceRedrawIfIE8(element); - } - // If a new breakpoint is triggered, ensure all sizes are updated in // case some new styles are applied if (!currentWidthRanges.equals(oldWidthRanges) @@ -391,21 +368,6 @@ public class ResponsiveConnector extends AbstractExtensionConnector } } - /** - * Forces IE8 to reinterpret CSS rules. - * {@link com.vaadin.client.WidgetUtil#forceIE8Redraw(com.google.gwt.dom.client.Element)} - * doesn't work in this case. - * - * @param element - * the element to redraw - */ - private void forceRedrawIfIE8(Element element) { - if (BrowserInfo.get().isIE8()) { - element.addClassName("foo"); - element.removeClassName("foo"); - } - } - private native String resolveBreakpoint(String which, int size) /*-{ @@ -447,3 +409,4 @@ public class ResponsiveConnector extends AbstractExtensionConnector }-*/; } + diff --git a/client/src/main/java/com/vaadin/client/ui/JsniMousewheelHandler.java b/client/src/main/java/com/vaadin/client/ui/JsniMousewheelHandler.java index 76105b21a9..7806f43985 100644 --- a/client/src/main/java/com/vaadin/client/ui/JsniMousewheelHandler.java +++ b/client/src/main/java/com/vaadin/client/ui/JsniMousewheelHandler.java @@ -59,9 +59,6 @@ abstract class JsniMousewheelHandler { // FireFox likes "wheel", while others use "mousewheel" var eventName = 'onmousewheel' in element ? 'mousewheel' : 'wheel'; element.addEventListener(eventName, this.@com.vaadin.client.ui.JsniMousewheelHandler::mousewheelListenerFunction); - } else { - // IE8 - element.attachEvent("onmousewheel", this.@com.vaadin.client.ui.JsniMousewheelHandler::mousewheelListenerFunction); } }-*/; @@ -71,10 +68,8 @@ abstract class JsniMousewheelHandler { // FireFox likes "wheel", while others use "mousewheel" var eventName = element.onwheel===undefined?"mousewheel":"wheel"; element.removeEventListener(eventName, this.@com.vaadin.client.ui.JsniMousewheelHandler::mousewheelListenerFunction); - } else { - // IE8 - element.detachEvent("onmousewheel", this.@com.vaadin.client.ui.JsniMousewheelHandler::mousewheelListenerFunction); } }-*/; } + diff --git a/client/src/main/java/com/vaadin/client/ui/VAbsoluteLayout.java b/client/src/main/java/com/vaadin/client/ui/VAbsoluteLayout.java index c4ad444348..f9b2ca585c 100644 --- a/client/src/main/java/com/vaadin/client/ui/VAbsoluteLayout.java +++ b/client/src/main/java/com/vaadin/client/ui/VAbsoluteLayout.java @@ -448,16 +448,7 @@ public class VAbsoluteLayout extends ComplexPanel { } // ensure ne values Style style = getElement().getStyle(); - /* - * IE8 dies when nulling zIndex, even in IE7 mode. All other css - * properties (and even in older IE's) accept null values just - * fine. Assign empty string instead of null. - */ - if (zIndex != null) { - style.setProperty("zIndex", zIndex); - } else { - style.setProperty("zIndex", ""); - } + style.setProperty("zIndex", zIndex); style.setProperty("top", top); style.setProperty("left", left); style.setProperty("right", right); @@ -506,3 +497,4 @@ public class VAbsoluteLayout extends ComplexPanel { } } } + diff --git a/client/src/main/java/com/vaadin/client/ui/VButton.java b/client/src/main/java/com/vaadin/client/ui/VButton.java index edc0e08875..93e807d148 100644 --- a/client/src/main/java/com/vaadin/client/ui/VButton.java +++ b/client/src/main/java/com/vaadin/client/ui/VButton.java @@ -205,14 +205,6 @@ public class VButton extends FocusWidget implements ClickHandler { DOM.setCapture(getElement()); isCapturing = true; addStyleName(CLASSNAME_PRESSED); - - if (BrowserInfo.get().isIE8() || BrowserInfo.get().isIE9()) { - /* - * We need to prevent the default behavior on these browsers - * since user-select is not available. - */ - event.preventDefault(); - } } break; case Event.ONMOUSEUP: @@ -225,12 +217,6 @@ public class VButton extends FocusWidget implements ClickHandler { } removeStyleName(CLASSNAME_PRESSED); - - // Explicitly prevent IE 8 from propagating mouseup events - // upward (fixes #6753) - if (BrowserInfo.get().isIE8()) { - event.stopPropagation(); - } } break; case Event.ONMOUSEMOVE: @@ -433,7 +419,7 @@ public class VButton extends FocusWidget implements ClickHandler { private static native int getHorizontalBorderAndPaddingWidth(Element elem) /*-{ // THIS METHOD IS ONLY USED FOR INTERNET EXPLORER, IT DOESN'T WORK WITH OTHERS - + var convertToPixel = function(elem, value) { // From the awesome hack by Dean Edwards // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 @@ -452,7 +438,7 @@ public class VButton extends FocusWidget implements ClickHandler { return ret; } - + var ret = 0; var sides = ["Right","Left"]; @@ -482,3 +468,4 @@ public class VButton extends FocusWidget implements ClickHandler { }-*/; } + diff --git a/client/src/main/java/com/vaadin/client/ui/VContextMenu.java b/client/src/main/java/com/vaadin/client/ui/VContextMenu.java index d68afccc59..09e1f5be8c 100644 --- a/client/src/main/java/com/vaadin/client/ui/VContextMenu.java +++ b/client/src/main/java/com/vaadin/client/ui/VContextMenu.java @@ -81,7 +81,7 @@ public class VContextMenu extends VOverlay implements SubPartAware { * to be set as an owner of menu */ public VContextMenu() { - super(true, false, true); + super(true, false); setWidget(menu); setStyleName("v-contextmenu"); getElement().setId(DOM.createUniqueId()); diff --git a/client/src/main/java/com/vaadin/client/ui/VFilterSelect.java b/client/src/main/java/com/vaadin/client/ui/VFilterSelect.java index de8f870175..44cbcf28f6 100644 --- a/client/src/main/java/com/vaadin/client/ui/VFilterSelect.java +++ b/client/src/main/java/com/vaadin/client/ui/VFilterSelect.java @@ -31,7 +31,6 @@ import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.NativeEvent; -import com.google.gwt.dom.client.Node; import com.google.gwt.dom.client.Style; import com.google.gwt.dom.client.Style.Display; import com.google.gwt.dom.client.Style.Unit; @@ -348,7 +347,7 @@ public class VFilterSelect extends Composite * Default constructor */ SuggestionPopup() { - super(true, false, true); + super(true, false); debug("VFS.SP: constructor()"); setOwner(VFilterSelect.this); menu = new SuggestionMenu(); @@ -469,15 +468,6 @@ public class VFilterSelect extends Composite .clearWidth(); setPopupPositionAndShow(popup); - // Fix for #14173 - // IE9 and IE10 have a bug, when resize an a element with - // box-shadow. - // IE9 and IE10 need explicit update to remove extra - // box-shadows - if (BrowserInfo.get().isIE9() - || BrowserInfo.get().isIE10()) { - forceReflow(); - } } }); } @@ -857,10 +847,6 @@ public class VFilterSelect extends Composite menu.setWidth(Window.getClientWidth() + "px"); } - if (BrowserInfo.get().isIE() - && BrowserInfo.get().getBrowserMajorVersion() < 10) { - setTdWidth(menu.getElement(), Window.getClientWidth() - 8); - } } setPopupPosition(left, top); @@ -904,44 +890,6 @@ public class VFilterSelect extends Composite width = WidgetUtil.escapeAttribute(suggestionPopupWidth); } menu.setWidth(width); - - // IE8 or 9? - if (BrowserInfo.get().isIE() - && BrowserInfo.get().getBrowserMajorVersion() < 10) { - // using legacy mode? - if (suggestionPopupWidth == null) { - // set the TD widths manually as these browsers do not - // respect display: block; width:100% rules - setTdWidth(menu.getElement(), naturalMenuWidth); - } else { - int compensation = WidgetUtil - .measureHorizontalPaddingAndBorder( - menu.getElement(), 4); - setTdWidth(menu.getElement(), - menu.getOffsetWidth() - compensation); - } - - } - } - - /** - * Descends to child elements until finds TD elements and sets their - * width in pixels. Can be used to workaround IE8 & 9 TD element - * display: block issues - * - * @param parent - * @param width - */ - private void setTdWidth(Node parent, int width) { - for (int i = 0; i < parent.getChildCount(); i++) { - Node child = parent.getChild(i); - if ("td".equals(child.getNodeName().toLowerCase())) { - ((Element) child).getStyle().setWidth(width, Unit.PX); - } else { - setTdWidth(child, width); - } - - } } /** @@ -1119,13 +1067,6 @@ public class VFilterSelect extends Composite isFirstIteration = false; } - if (suggestionPopupWidth != null && BrowserInfo.get().isIE() - && BrowserInfo.get().getBrowserMajorVersion() < 10) { - // set TD width to a low value so that they won't mandate the - // suggestion pop-up width - suggestionPopup.setTdWidth(suggestionPopup.menu.getElement(), - 1); - } } /** @@ -2058,7 +1999,7 @@ public class VFilterSelect extends Composite } private void afterSelectedItemIconChange() { - if (BrowserInfo.get().isWebkit() || BrowserInfo.get().isIE8()) { + if (BrowserInfo.get().isWebkit()) { // Some browsers need a nudge to reposition the text field forceReflow(); } diff --git a/client/src/main/java/com/vaadin/client/ui/VLabel.java b/client/src/main/java/com/vaadin/client/ui/VLabel.java index dadaac73ee..fbea5e7ffe 100644 --- a/client/src/main/java/com/vaadin/client/ui/VLabel.java +++ b/client/src/main/java/com/vaadin/client/ui/VLabel.java @@ -18,10 +18,8 @@ package com.vaadin.client.ui; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.ui.HTML; -import com.vaadin.client.BrowserInfo; import com.vaadin.client.Util; import com.vaadin.client.VTooltip; -import com.vaadin.client.WidgetUtil; public class VLabel extends HTML { @@ -59,14 +57,5 @@ public class VLabel extends HTML { } } - @Override - public void setText(String text) { - if (BrowserInfo.get().isIE8()) { - // #3983 - IE8 incorrectly replaces \n with <br> so we do the - // escaping manually and set as HTML - super.setHTML(WidgetUtil.escapeHTML(text)); - } else { - super.setText(text); - } - } } + diff --git a/client/src/main/java/com/vaadin/client/ui/VMenuBar.java b/client/src/main/java/com/vaadin/client/ui/VMenuBar.java index 9698c9de07..84b56d75b2 100644 --- a/client/src/main/java/com/vaadin/client/ui/VMenuBar.java +++ b/client/src/main/java/com/vaadin/client/ui/VMenuBar.java @@ -646,7 +646,7 @@ public class VMenuBar extends SimpleFocusablePanel * @return overlay to use */ protected VOverlay createOverlay() { - return new VOverlay(true, false, true); + return new VOverlay(true, false); } private int adjustPopupHeight(int top, final int shadowSpace) { diff --git a/client/src/main/java/com/vaadin/client/ui/VOverlay.java b/client/src/main/java/com/vaadin/client/ui/VOverlay.java index e3e8b95af1..2263004451 100644 --- a/client/src/main/java/com/vaadin/client/ui/VOverlay.java +++ b/client/src/main/java/com/vaadin/client/ui/VOverlay.java @@ -21,9 +21,7 @@ import java.util.logging.Logger; import com.google.gwt.aria.client.Roles; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Element; -import com.google.gwt.event.logical.shared.CloseHandler; import com.google.gwt.user.client.DOM; -import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.RootPanel; import com.vaadin.client.ApplicationConnection; import com.vaadin.client.ComponentConnector; @@ -44,7 +42,7 @@ import com.vaadin.client.widgets.Overlay; * directly. */ @Deprecated -public class VOverlay extends Overlay implements CloseHandler<PopupPanel> { +public class VOverlay extends Overlay { /* * ApplicationConnection that this overlay belongs to, which is needed to @@ -67,15 +65,6 @@ public class VOverlay extends Overlay implements CloseHandler<PopupPanel> { super(autoHide, modal); } - /** - * @deprecated See main JavaDoc for VOverlay. Use the other constructors - * without the <code>showShadow</code> parameter. - */ - @Deprecated - public VOverlay(boolean autoHide, boolean modal, boolean showShadow) { - super(autoHide, modal, showShadow); - } - /* * A "thread local" of sorts, set temporarily so that VOverlayImpl knows * which VOverlay is using it, so that it can be attached to the correct diff --git a/client/src/main/java/com/vaadin/client/ui/VPopupCalendar.java b/client/src/main/java/com/vaadin/client/ui/VPopupCalendar.java index c2b61c4868..cc7d1a9820 100644 --- a/client/src/main/java/com/vaadin/client/ui/VPopupCalendar.java +++ b/client/src/main/java/com/vaadin/client/ui/VPopupCalendar.java @@ -174,7 +174,7 @@ public class VPopupCalendar extends VTextualDate } }); - popup = new VOverlay(true, false, true); + popup = new VOverlay(true, false); popup.setOwner(this); FlowPanel wrapper = new FlowPanel(); diff --git a/client/src/main/java/com/vaadin/client/ui/VPopupView.java b/client/src/main/java/com/vaadin/client/ui/VPopupView.java index e551eb7a29..e8499a96c1 100644 --- a/client/src/main/java/com/vaadin/client/ui/VPopupView.java +++ b/client/src/main/java/com/vaadin/client/ui/VPopupView.java @@ -245,7 +245,7 @@ public class VPopupView extends HTML private ShortcutActionHandler shortcutActionHandler; public CustomPopup() { - super(true, false, true); // autoHide, not modal, dropshadow + super(true, false); // autoHide, not modal setOwner(VPopupView.this); // Delegate popup keyboard events to the relevant handler. The // events do not propagate automatically because the popup is diff --git a/client/src/main/java/com/vaadin/client/ui/VScrollTable.java b/client/src/main/java/com/vaadin/client/ui/VScrollTable.java index d42eb6f85f..6e5909ee49 100644 --- a/client/src/main/java/com/vaadin/client/ui/VScrollTable.java +++ b/client/src/main/java/com/vaadin/client/ui/VScrollTable.java @@ -85,7 +85,6 @@ import com.vaadin.client.ConnectorMap; import com.vaadin.client.DeferredWorker; import com.vaadin.client.Focusable; import com.vaadin.client.HasChildMeasurementHintConnector.ChildMeasurementHint; -import com.vaadin.client.legacy.ui.VLegacyTextField; import com.vaadin.client.MouseEventDetailsBuilder; import com.vaadin.client.StyleConstants; import com.vaadin.client.TooltipInfo; @@ -94,6 +93,7 @@ import com.vaadin.client.Util; import com.vaadin.client.VConsole; import com.vaadin.client.VTooltip; import com.vaadin.client.WidgetUtil; +import com.vaadin.client.legacy.ui.VLegacyTextField; import com.vaadin.client.ui.VScrollTable.VScrollTableBody.VScrollTableRow; import com.vaadin.client.ui.dd.DDUtil; import com.vaadin.client.ui.dd.VAbstractDropHandler; @@ -3656,12 +3656,6 @@ public class VScrollTable extends FlowPanel } } else { c.setText(caption); - if (BrowserInfo.get().isIE10()) { - // IE10 can some times define min-height to include - // padding when setting the text... - // See https://dev.vaadin.com/ticket/15169 - WidgetUtil.forceIERedraw(c.getElement()); - } } c.setSorted(false); @@ -8416,3 +8410,4 @@ public class VScrollTable extends FlowPanel } } + diff --git a/client/src/main/java/com/vaadin/client/ui/VSlider.java b/client/src/main/java/com/vaadin/client/ui/VSlider.java index ac2363b362..920ffec832 100644 --- a/client/src/main/java/com/vaadin/client/ui/VSlider.java +++ b/client/src/main/java/com/vaadin/client/ui/VSlider.java @@ -64,7 +64,7 @@ public class VSlider extends SimpleFocusablePanel protected SliderOrientation orientation = SliderOrientation.HORIZONTAL; private final HTML feedback = new HTML("", false); - private final VOverlay feedbackPopup = new VOverlay(true, false, true) { + private final VOverlay feedbackPopup = new VOverlay(true, false) { { setOwner(VSlider.this); } diff --git a/client/src/main/java/com/vaadin/client/ui/VTextArea.java b/client/src/main/java/com/vaadin/client/ui/VTextArea.java index 574c50887c..00094914d0 100644 --- a/client/src/main/java/com/vaadin/client/ui/VTextArea.java +++ b/client/src/main/java/com/vaadin/client/ui/VTextArea.java @@ -231,7 +231,7 @@ public class VTextArea extends VLegacyTextField implements DragImageModifier { if (info.isSafari()) { return true; } - if (info.isIE10() || info.isIE11() || info.isEdge()) { + if (info.isIE11() || info.isEdge()) { return true; } if (info.isAndroid()) { @@ -335,3 +335,4 @@ public class VTextArea extends VLegacyTextField implements DragImageModifier { } } } + diff --git a/client/src/main/java/com/vaadin/client/ui/VTree.java b/client/src/main/java/com/vaadin/client/ui/VTree.java index 7bf1d5cf9b..f9101a5e30 100644 --- a/client/src/main/java/com/vaadin/client/ui/VTree.java +++ b/client/src/main/java/com/vaadin/client/ui/VTree.java @@ -2260,10 +2260,8 @@ public class VTree extends FocusElementPanel * Tell LayoutManager that a layout is needed later for this VTree */ private void doLayout() { - // IE8 needs a hack to measure the tree again after update - WidgetUtil.forceIE8Redraw(getElement()); - // This calls LayoutManager setNeedsMeasure and layoutNow Util.notifyParentOfSizeChange(this, false); } } + diff --git a/client/src/main/java/com/vaadin/client/ui/VUI.java b/client/src/main/java/com/vaadin/client/ui/VUI.java index e1e8f670a5..585631a6b6 100644 --- a/client/src/main/java/com/vaadin/client/ui/VUI.java +++ b/client/src/main/java/com/vaadin/client/ui/VUI.java @@ -35,7 +35,6 @@ import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.SimplePanel; import com.vaadin.client.ApplicationConnection; -import com.vaadin.client.BrowserInfo; import com.vaadin.client.ComponentConnector; import com.vaadin.client.ConnectorMap; import com.vaadin.client.Focusable; @@ -369,16 +368,11 @@ public class VUI extends SimplePanel implements ResizeHandler, */ private void triggerSizeChangeCheck() { /* - * IE (pre IE9 at least) will give us some false resize events due to - * problems with scrollbars. Firefox 3 might also produce some extra - * events. We postpone both the re-layouting and the server side event - * for a while to deal with these issues. - * - * We may also postpone these events to avoid slowness when resizing the + * We may postpone these events to avoid slowness when resizing the * browser window. Constantly recalculating the layout causes the resize * operation to be really slow with complex layouts. */ - boolean lazy = resizeLazy || BrowserInfo.get().isIE8(); + boolean lazy = resizeLazy; if (lazy) { delayedResizeExecutor.trigger(); diff --git a/client/src/main/java/com/vaadin/client/ui/VUpload.java b/client/src/main/java/com/vaadin/client/ui/VUpload.java index 1d038dfb3d..676d3a4a00 100644 --- a/client/src/main/java/com/vaadin/client/ui/VUpload.java +++ b/client/src/main/java/com/vaadin/client/ui/VUpload.java @@ -160,8 +160,6 @@ public class VUpload extends SimplePanel { private static native void setEncoding(Element form, String encoding) /*-{ form.enctype = encoding; - // For IE8 - form.encoding = encoding; }-*/; /** For internal use only. May be removed or replaced in the future. */ @@ -393,3 +391,4 @@ public class VUpload extends SimplePanel { } } + diff --git a/client/src/main/java/com/vaadin/client/ui/VWindow.java b/client/src/main/java/com/vaadin/client/ui/VWindow.java index 922cfa515b..c3d9e7eddf 100644 --- a/client/src/main/java/com/vaadin/client/ui/VWindow.java +++ b/client/src/main/java/com/vaadin/client/ui/VWindow.java @@ -32,8 +32,6 @@ import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.NativeEvent; -import com.google.gwt.dom.client.Style; -import com.google.gwt.dom.client.Style.Display; import com.google.gwt.dom.client.Style.Position; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.dom.client.Style.Visibility; @@ -211,9 +209,7 @@ public class VWindow extends VOverlay implements ShortcutActionHandlerOwner, }); public VWindow() { - super(false, false, true); // no autohide, not modal, shadow - // Different style of shadow for windows - setShadowStyle("window"); + super(false, false); // no autohide, not modal Roles.getDialogRole().set(getElement()); Roles.getDialogRole().setAriaRelevantProperty(getElement(), @@ -224,9 +220,7 @@ public class VWindow extends VOverlay implements ShortcutActionHandlerOwner, contentPanel.addKeyDownHandler(this); contentPanel.addFocusHandler(this); contentPanel.addBlurHandler(this); - if (!BrowserInfo.get().isIE8() && !BrowserInfo.get().isIE9()) { - addTransitionEndLayoutListener(getElement()); - } + addTransitionEndLayoutListener(getElement()); } @@ -249,20 +243,6 @@ public class VWindow extends VOverlay implements ShortcutActionHandlerOwner, * state. */ setTabStopEnabled(doTabStop); - - // Fix for #14413. Any pseudo elements inside these elements are not - // visible on initial render unless we shake the DOM. - if (BrowserInfo.get().isIE8()) { - closeBox.getStyle().setDisplay(Display.NONE); - maximizeRestoreBox.getStyle().setDisplay(Display.NONE); - Scheduler.get().scheduleFinally(new Command() { - @Override - public void execute() { - closeBox.getStyle().clearDisplay(); - maximizeRestoreBox.getStyle().clearDisplay(); - } - }); - } } @Override @@ -673,23 +653,6 @@ public class VWindow extends VOverlay implements ShortcutActionHandlerOwner, @Override public void hide() { - - /* - * If the window has a RichTextArea and the RTA is focused at the time - * of hiding in IE8 only the window will have some problems returning - * the focus to the correct place. Curiously the focus will be returned - * correctly if clicking on the "close" button in the window header but - * closing the window from a button for example in the window will fail. - * Symptom described in #10776 - * - * The problematic part is that for the focus to be returned correctly - * an input element needs to be focused in the root panel. Focusing some - * other element apparently won't work. - */ - if (BrowserInfo.get().isIE8()) { - fixIE8FocusCaptureIssue(); - } - if (vaadinModality) { hideModalityCurtain(); } @@ -706,19 +669,6 @@ public class VWindow extends VOverlay implements ShortcutActionHandlerOwner, focusTopmostModalWindow(); } - private void fixIE8FocusCaptureIssue() { - Element e = DOM.createInputText(); - Style elemStyle = e.getStyle(); - elemStyle.setPosition(Position.ABSOLUTE); - elemStyle.setTop(-10, Unit.PX); - elemStyle.setWidth(0, Unit.PX); - elemStyle.setHeight(0, Unit.PX); - - contentPanel.getElement().appendChild(e); - e.focus(); - contentPanel.getElement().removeChild(e); - } - /** For internal use only. May be removed or replaced in the future. */ public void setVaadinModality(boolean modality) { vaadinModality = modality; diff --git a/client/src/main/java/com/vaadin/client/ui/orderedlayout/Slot.java b/client/src/main/java/com/vaadin/client/ui/orderedlayout/Slot.java index e95e8e6e05..0f4fb0f816 100644 --- a/client/src/main/java/com/vaadin/client/ui/orderedlayout/Slot.java +++ b/client/src/main/java/com/vaadin/client/ui/orderedlayout/Slot.java @@ -27,14 +27,12 @@ import com.google.gwt.user.client.Event; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; -import com.vaadin.client.BrowserInfo; import com.vaadin.client.LayoutManager; import com.vaadin.client.StyleConstants; import com.vaadin.client.WidgetUtil; import com.vaadin.client.ui.FontIcon; import com.vaadin.client.ui.Icon; import com.vaadin.client.ui.ImageIcon; -import com.vaadin.client.ui.layout.ElementResizeEvent; import com.vaadin.client.ui.layout.ElementResizeListener; import com.vaadin.shared.ui.AlignmentInfo; @@ -64,22 +62,6 @@ public class Slot extends SimplePanel { private ElementResizeListener spacingResizeListener; - /* - * This listener is applied only in IE8 to workaround browser issue where - * IE8 forgets to update the error indicator position when the slot gets - * resized by widget resizing itself. #11693 - */ - private ElementResizeListener ie8CaptionElementResizeUpdateListener = new ElementResizeListener() { - - @Override - public void onElementResize(ElementResizeEvent e) { - Element caption = getCaptionElement(); - if (caption != null) { - WidgetUtil.forceIE8Redraw(caption); - } - } - }; - // Caption is placed after component unless there is some part which // moves it above. private CaptionPosition captionPosition = CaptionPosition.RIGHT; @@ -176,10 +158,6 @@ public class Slot extends SimplePanel { spacingResizeListener); } - if (BrowserInfo.get().isIE8()) { - lm.addElementResizeListener(getWidget().getElement(), - ie8CaptionElementResizeUpdateListener); - } } } @@ -204,10 +182,6 @@ public class Slot extends SimplePanel { spacingResizeListener); } - if (BrowserInfo.get().isIE8()) { - lm.removeElementResizeListener(getWidget().getElement(), - ie8CaptionElementResizeUpdateListener); - } } } @@ -672,13 +646,8 @@ public class Slot extends SimplePanel { } } }; - if (BrowserInfo.get().isIE8()) { - // IE8 can't fix the focus immediately. It will fail. - focusTimer.schedule(25); - } else { - // Newer IE versions can handle things immediately. - focusTimer.run(); - } + // Newer IE versions can handle things immediately. + focusTimer.run(); } } } @@ -831,3 +800,4 @@ public class Slot extends SimplePanel { } } } + diff --git a/client/src/main/java/com/vaadin/client/ui/orderedlayout/VAbstractOrderedLayout.java b/client/src/main/java/com/vaadin/client/ui/orderedlayout/VAbstractOrderedLayout.java index b6f3644552..a8c1f3ac3d 100644 --- a/client/src/main/java/com/vaadin/client/ui/orderedlayout/VAbstractOrderedLayout.java +++ b/client/src/main/java/com/vaadin/client/ui/orderedlayout/VAbstractOrderedLayout.java @@ -30,11 +30,9 @@ import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.RequiresResize; import com.google.gwt.user.client.ui.Widget; -import com.vaadin.client.BrowserInfo; import com.vaadin.client.LayoutManager; import com.vaadin.client.Profiler; import com.vaadin.client.Util; -import com.vaadin.client.WidgetUtil; import com.vaadin.shared.ui.MarginInfo; /** @@ -561,19 +559,10 @@ public class VAbstractOrderedLayout extends FlowPanel { } else { // Non-relative child without expansion should be unconstrained - if (BrowserInfo.get().isIE8()) { - // unconstrained in IE8 is auto - if (vertical) { - slot.setHeight("auto"); - } else { - slot.setWidth("auto"); - } + if (vertical) { + slotStyle.clearHeight(); } else { - if (vertical) { - slotStyle.clearHeight(); - } else { - slotStyle.clearWidth(); - } + slotStyle.clearWidth(); } } } @@ -718,7 +707,6 @@ public class VAbstractOrderedLayout extends FlowPanel { } } } - WidgetUtil.forceIE8Redraw(getElement()); } /** @@ -747,3 +735,4 @@ public class VAbstractOrderedLayout extends FlowPanel { } } + diff --git a/client/src/main/java/com/vaadin/client/ui/table/TableConnector.java b/client/src/main/java/com/vaadin/client/ui/table/TableConnector.java index 2dbb1aca6f..ccfb715291 100644 --- a/client/src/main/java/com/vaadin/client/ui/table/TableConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/table/TableConnector.java @@ -23,11 +23,9 @@ import com.google.gwt.core.client.Scheduler; import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.EventTarget; -import com.google.gwt.dom.client.Style.Position; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.user.client.ui.Widget; import com.vaadin.client.ApplicationConnection; -import com.vaadin.client.BrowserInfo; import com.vaadin.client.ComponentConnector; import com.vaadin.client.ConnectorHierarchyChangeEvent; import com.vaadin.client.ConnectorHierarchyChangeEvent.ConnectorHierarchyChangeHandler; @@ -388,19 +386,6 @@ public class TableConnector extends AbstractFieldConnector public void updateEnabledState(boolean enabledState) { super.updateEnabledState(enabledState); getWidget().enabled = isEnabled(); - - if (BrowserInfo.get().isIE8() && !getWidget().enabled) { - /* - * The disabled shim will not cover the table body if it is relative - * in IE8. See #7324 - */ - getWidget().scrollBodyPanel.getElement().getStyle() - .setPosition(Position.STATIC); - } else if (BrowserInfo.get().isIE8()) { - getWidget().scrollBodyPanel.getElement().getStyle() - .setPosition(Position.RELATIVE); - } - } @Override @@ -431,9 +416,6 @@ public class TableConnector extends AbstractFieldConnector Scheduler.get().scheduleFinally(new ScheduledCommand() { @Override public void execute() { - // IE8 needs some hacks to measure sizes correctly - WidgetUtil.forceIE8Redraw(getWidget().getElement()); - getLayoutManager().setNeedsMeasure(TableConnector.this); ServerConnector parent = getParent(); if (parent instanceof ComponentConnector) { diff --git a/client/src/main/java/com/vaadin/client/ui/tree/TreeConnector.java b/client/src/main/java/com/vaadin/client/ui/tree/TreeConnector.java index ba3ee07afb..c28a58aaad 100644 --- a/client/src/main/java/com/vaadin/client/ui/tree/TreeConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/tree/TreeConnector.java @@ -66,9 +66,6 @@ public class TreeConnector extends AbstractComponentConnector if (uidl.hasAttribute("partialUpdate")) { handleUpdate(uidl); - // IE8 needs a hack to measure the tree again after update - WidgetUtil.forceIE8Redraw(getWidget().getElement()); - getWidget().rendering = false; return; } @@ -178,9 +175,6 @@ public class TreeConnector extends AbstractComponentConnector getWidget().focusedNode.setFocused(false); } - // IE8 needs a hack to measure the tree again after update - WidgetUtil.forceIE8Redraw(getWidget().getElement()); - getWidget().rendering = false; } @@ -395,3 +389,4 @@ public class TreeConnector extends AbstractComponentConnector WidgetUtil.clearTextSelection(); } } + diff --git a/client/src/main/java/com/vaadin/client/ui/ui/UIConnector.java b/client/src/main/java/com/vaadin/client/ui/ui/UIConnector.java index ec2144fb08..7c0df8761d 100644 --- a/client/src/main/java/com/vaadin/client/ui/ui/UIConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/ui/UIConnector.java @@ -30,7 +30,6 @@ import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.dom.client.NodeList; import com.google.gwt.dom.client.Style; import com.google.gwt.dom.client.Style.Position; -import com.google.gwt.dom.client.StyleElement; import com.google.gwt.dom.client.StyleInjector; import com.google.gwt.event.dom.client.KeyDownEvent; import com.google.gwt.event.dom.client.KeyDownHandler; @@ -51,7 +50,6 @@ import com.google.gwt.user.client.ui.Widget; import com.google.web.bindery.event.shared.HandlerRegistration; import com.vaadin.client.ApplicationConnection; import com.vaadin.client.ApplicationConnection.ApplicationStoppedEvent; -import com.vaadin.client.BrowserInfo; import com.vaadin.client.ComponentConnector; import com.vaadin.client.ConnectorHierarchyChangeEvent; import com.vaadin.client.Focusable; @@ -486,17 +484,6 @@ public class UIConnector extends AbstractSingleComponentContainerConnector public void init(String rootPanelId, ApplicationConnection applicationConnection) { - // Create a style tag for style injections so they don't end up in - // the theme tag in IE8-IE10 (we don't want to wipe them out if we - // change theme). - // StyleInjectorImplIE always injects to the last style tag on the page. - if (BrowserInfo.get().isIE() - && BrowserInfo.get().getBrowserMajorVersion() < 11) { - StyleElement style = Document.get().createStyleElement(); - style.setType("text/css"); - getHead().appendChild(style); - } - Widget shortcutContextWidget = getWidget(); if (applicationConnection.getConfiguration().isStandalone()) { // Listen to body for standalone apps (#19392) @@ -611,7 +598,7 @@ public class UIConnector extends AbstractSingleComponentContainerConnector * height. Assuming v-ui does not have an undefined width for now, see * #8460. */ - if (child.isRelativeHeight() && !BrowserInfo.get().isIE9()) { + if (child.isRelativeHeight()) { childStyle.setPosition(Position.ABSOLUTE); } else { childStyle.clearPosition(); diff --git a/client/src/main/java/com/vaadin/client/ui/window/WindowConnector.java b/client/src/main/java/com/vaadin/client/ui/window/WindowConnector.java index fe1d5e521f..7d9094e583 100644 --- a/client/src/main/java/com/vaadin/client/ui/window/WindowConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/window/WindowConnector.java @@ -33,13 +33,11 @@ import com.google.gwt.event.dom.client.DoubleClickHandler; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Window; import com.vaadin.client.ApplicationConnection; -import com.vaadin.client.BrowserInfo; import com.vaadin.client.ComponentConnector; import com.vaadin.client.ConnectorHierarchyChangeEvent; import com.vaadin.client.LayoutManager; import com.vaadin.client.Paintable; import com.vaadin.client.UIDL; -import com.vaadin.client.WidgetUtil; import com.vaadin.client.communication.RpcProxy; import com.vaadin.client.communication.StateChangeEvent; import com.vaadin.client.ui.AbstractSingleComponentContainerConnector; @@ -251,10 +249,7 @@ public class WindowConnector extends AbstractSingleComponentContainerConnector Element layoutElement = content.getWidget().getElement(); Style childStyle = layoutElement.getStyle(); - // IE8 needs some hackery to measure its content correctly - WidgetUtil.forceIE8Redraw(layoutElement); - - if (content.isRelativeHeight() && !BrowserInfo.get().isIE9()) { + if (content.isRelativeHeight()) { childStyle.setPosition(Position.ABSOLUTE); Style wrapperStyle = contentElement.getStyle(); diff --git a/client/src/main/java/com/vaadin/client/widgets/Escalator.java b/client/src/main/java/com/vaadin/client/widgets/Escalator.java index 2aca151509..a5e95a26a5 100644 --- a/client/src/main/java/com/vaadin/client/widgets/Escalator.java +++ b/client/src/main/java/com/vaadin/client/widgets/Escalator.java @@ -132,7 +132,7 @@ import com.vaadin.shared.util.SharedUtil; Each RowContainer can be thought to have three levels of indices for any given displayed row (but the distinction - matters primarily for the BodyRowContainerImpl, because of + matters primarily for the BodyRowContainerImpl, because of the way it scrolls through data): - Logical index @@ -151,8 +151,8 @@ import com.vaadin.shared.util.SharedUtil; (because of 0-based indices). In Header and FooterRowContainers, you are safe to assume that the logical index is the same as the physical index. But because the - BodyRowContainerImpl never displays large data sources - entirely in the DOM, a physical index usually has no + BodyRowContainerImpl never displays large data sources + entirely in the DOM, a physical index usually has no apparent direct relationship with its logical index. VISUAL INDEX is the index relating to the order that you @@ -678,7 +678,7 @@ public class Escalator extends Widget var hScrollElem = hScroll.@com.vaadin.client.widget.escalator.ScrollbarBundle::getElement()(); return $entry(function(e) { - var target = e.target || e.srcElement; // IE8 uses e.scrElement + var target = e.target; // in case the scroll event was native (i.e. scrollbars were dragged, or // the scrollTop/Left was manually modified), the bundles have old cache @@ -926,14 +926,9 @@ public class Escalator extends Widget * class. */ /*-{ - if (element.addEventListener) { - // firefox likes "wheel", while others use "mousewheel" - var eventName = 'onmousewheel' in element ? 'mousewheel' : 'wheel'; - element.addEventListener(eventName, this.@com.vaadin.client.widgets.JsniWorkaround::mousewheelListenerFunction); - } else { - // IE8 - element.attachEvent("onmousewheel", this.@com.vaadin.client.widgets.JsniWorkaround::mousewheelListenerFunction); - } + // firefox likes "wheel", while others use "mousewheel" + var eventName = 'onmousewheel' in element ? 'mousewheel' : 'wheel'; + element.addEventListener(eventName, this.@com.vaadin.client.widgets.JsniWorkaround::mousewheelListenerFunction); }-*/; public native void detachMousewheelListener(Element element) @@ -946,14 +941,9 @@ public class Escalator extends Widget * class. */ /*-{ - if (element.addEventListener) { - // firefox likes "wheel", while others use "mousewheel" - var eventName = element.onwheel===undefined?"mousewheel":"wheel"; - element.removeEventListener(eventName, this.@com.vaadin.client.widgets.JsniWorkaround::mousewheelListenerFunction); - } else { - // IE8 - element.detachEvent("onmousewheel", this.@com.vaadin.client.widgets.JsniWorkaround::mousewheelListenerFunction); - } + // firefox likes "wheel", while others use "mousewheel" + var eventName = element.onwheel===undefined?"mousewheel":"wheel"; + element.removeEventListener(eventName, this.@com.vaadin.client.widgets.JsniWorkaround::mousewheelListenerFunction); }-*/; public native void attachTouchListeners(Element element) @@ -966,14 +956,10 @@ public class Escalator extends Widget * class. */ /*-{ - if (element.addEventListener) { - element.addEventListener("touchstart", this.@com.vaadin.client.widgets.JsniWorkaround::touchStartFunction); - element.addEventListener("touchmove", this.@com.vaadin.client.widgets.JsniWorkaround::touchMoveFunction); - element.addEventListener("touchend", this.@com.vaadin.client.widgets.JsniWorkaround::touchEndFunction); - element.addEventListener("touchcancel", this.@com.vaadin.client.widgets.JsniWorkaround::touchEndFunction); - } else { - // this would be IE8, but we don't support it with touch - } + element.addEventListener("touchstart", this.@com.vaadin.client.widgets.JsniWorkaround::touchStartFunction); + element.addEventListener("touchmove", this.@com.vaadin.client.widgets.JsniWorkaround::touchMoveFunction); + element.addEventListener("touchend", this.@com.vaadin.client.widgets.JsniWorkaround::touchEndFunction); + element.addEventListener("touchcancel", this.@com.vaadin.client.widgets.JsniWorkaround::touchEndFunction); }-*/; public native void detachTouchListeners(Element element) @@ -986,14 +972,10 @@ public class Escalator extends Widget * class. */ /*-{ - if (element.removeEventListener) { - element.removeEventListener("touchstart", this.@com.vaadin.client.widgets.JsniWorkaround::touchStartFunction); - element.removeEventListener("touchmove", this.@com.vaadin.client.widgets.JsniWorkaround::touchMoveFunction); - element.removeEventListener("touchend", this.@com.vaadin.client.widgets.JsniWorkaround::touchEndFunction); - element.removeEventListener("touchcancel", this.@com.vaadin.client.widgets.JsniWorkaround::touchEndFunction); - } else { - // this would be IE8, but we don't support it with touch - } + element.removeEventListener("touchstart", this.@com.vaadin.client.widgets.JsniWorkaround::touchStartFunction); + element.removeEventListener("touchmove", this.@com.vaadin.client.widgets.JsniWorkaround::touchMoveFunction); + element.removeEventListener("touchend", this.@com.vaadin.client.widgets.JsniWorkaround::touchEndFunction); + element.removeEventListener("touchcancel", this.@com.vaadin.client.widgets.JsniWorkaround::touchEndFunction); }-*/; public void scrollToColumn(final int columnIndex, @@ -1069,8 +1051,9 @@ public class Escalator extends Widget /** * The table section element ({@code <thead>}, {@code <tbody>} or - * {@code <tfoot>}) the rows (i.e. {@code - * <tr> + * {@code <tfoot>}) the rows (i.e. {@code + * + <tr> * } tags) are contained in. */ protected final TableSectionElement root; @@ -1760,8 +1743,9 @@ public class Escalator extends Widget * Applies the total length of the columns to each row element. * <p> * <em>Note:</em> In contrast to {@link #reapplyColumnWidths()}, this - * method only modifies the width of the {@code - * <tr> + * method only modifies the width of the {@code + * + <tr> * } element, not the cells within. */ protected void reapplyRowWidths() { @@ -3218,7 +3202,7 @@ public class Escalator extends Widget * |3| ==> |*| ==> |5| <- newly rendered * |4| |*| * 5 5 - * + * * 1 1 |1| <- newly rendered * |2| |*| |4| * |3| ==> |*| ==> |5| <- newly rendered @@ -3265,7 +3249,7 @@ public class Escalator extends Widget * 1 |1| <-- newly rendered (by scrolling) * |4| |4| * |*| ==> |*| - * |*| + * |*| * 5 5 */ final double newScrollTop = contentBottom @@ -3297,7 +3281,7 @@ public class Escalator extends Widget * |1| |1| * |4| ==> |4| * |*| |5| <-- newly rendered - * + * * 5 */ @@ -3370,7 +3354,7 @@ public class Escalator extends Widget * : : |4| <- newly rendered * |5| |5| |5| * |6| ==> |*| ==> |7| - * |7| |7| + * |7| |7| */ final int logicalTargetIndex = getLogicalRowIndex( @@ -5616,32 +5600,15 @@ public class Escalator extends Widget if (BrowserInfo.get().isIE()) { /* * IE refuses to scroll properly if the DIV isn't at least one pixel - * larger than the scrollbar controls themselves. But, probably - * because of subpixel rendering, in Grid, one pixel isn't enough, - * so we'll add two instead. + * larger than the scrollbar controls themselves. */ - if (BrowserInfo.get().isIE9()) { - scrollbarThickness += 2; - } else { - scrollbarThickness += 1; - } + scrollbarThickness += 1; } root.appendChild(verticalScrollbar.getElement()); verticalScrollbar.addScrollHandler(scrollHandler); verticalScrollbar.setScrollbarThickness(scrollbarThickness); - if (BrowserInfo.get().isIE8()) { - /* - * IE8 will have to compensate for a misalignment where it pops the - * scrollbar outside of its box. See Bug 3 in - * http://edskes.net/ie/ie8overflowandexpandingboxbugs.htm - */ - Style vScrollStyle = verticalScrollbar.getElement().getStyle(); - vScrollStyle.setRight(verticalScrollbar.getScrollbarThickness() - 1, - Unit.PX); - } - root.appendChild(horizontalScrollbar.getElement()); horizontalScrollbar.addScrollHandler(scrollHandler); horizontalScrollbar.setScrollbarThickness(scrollbarThickness); @@ -6815,4 +6782,4 @@ public class Escalator extends Widget double getMinCellWidth(int colIndex) { return columnConfiguration.getMinCellWidth(colIndex); } -}
\ No newline at end of file +} diff --git a/client/src/main/java/com/vaadin/client/widgets/Grid.java b/client/src/main/java/com/vaadin/client/widgets/Grid.java index bbeb683ad7..53be286ee0 100644 --- a/client/src/main/java/com/vaadin/client/widgets/Grid.java +++ b/client/src/main/java/com/vaadin/client/widgets/Grid.java @@ -36,7 +36,6 @@ import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.core.shared.GWT; import com.google.gwt.dom.client.BrowserEvents; import com.google.gwt.dom.client.DivElement; -import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.EventTarget; import com.google.gwt.dom.client.NativeEvent; @@ -1291,23 +1290,6 @@ public class Grid<T> extends ResizeComposite implements HasSelectionHandlers<T>, private static final String ERROR_CLASS_NAME = "error"; private static final String NOT_EDITABLE_CLASS_NAME = "not-editable"; - ScheduledCommand fieldFocusCommand = new ScheduledCommand() { - private int count = 0; - - @Override - public void execute() { - Element focusedElement = WidgetUtil.getFocusedElement(); - if (focusedElement == grid.getElement() - || focusedElement == Document.get().getBody() - || count > 2) { - focusColumn(focusedColumnIndex); - } else { - ++count; - Scheduler.get().scheduleDeferred(this); - } - } - }; - /** * A handler for events related to the Grid editor. Responsible for * opening, moving or closing the editor based on the received event. @@ -1865,11 +1847,7 @@ public class Grid<T> extends ResizeComposite implements HasSelectionHandlers<T>, } if (i == focusedColumnIndex) { - if (BrowserInfo.get().isIE8()) { - Scheduler.get().scheduleDeferred(fieldFocusCommand); - } else { - focusColumn(focusedColumnIndex); - } + focusColumn(focusedColumnIndex); } } else { cell.addClassName(NOT_EDITABLE_CLASS_NAME); @@ -3405,8 +3383,7 @@ public class Grid<T> extends ResizeComposite implements HasSelectionHandlers<T>, */ final double widthPerRatio; int leftOver = 0; - if (BrowserInfo.get().isIE8() || BrowserInfo.get().isIE9() - || BrowserInfo.getBrowserString().contains("PhantomJS")) { + if (BrowserInfo.getBrowserString().contains("PhantomJS")) { // These browsers report subpixels as integers. this usually // results into issues.. widthPerRatio = (int) (pixelsToDistribute / totalRatios); @@ -4092,10 +4069,12 @@ public class Grid<T> extends ResizeComposite implements HasSelectionHandlers<T>, * This is a workaround to make Chrome work like Firefox. In Chrome, * normally if you start a drag on one cell and release on: * <ul> - * <li>that same cell, the click event is that {@code - * <td>}. - * <li>a cell on that same row, the click event is the parent {@code - * <tr> + * <li>that same cell, the click event is that {@code + * + <td>}. + * <li>a cell on that same row, the click event is the parent {@code + * + <tr> * }. * <li>a cell on another row, the click event is the table section ancestor * ({@code <thead>}, {@code <tbody>} or {@code <tfoot>}). diff --git a/client/src/main/java/com/vaadin/client/widgets/Overlay.java b/client/src/main/java/com/vaadin/client/widgets/Overlay.java index 077448541b..35a5b46576 100644 --- a/client/src/main/java/com/vaadin/client/widgets/Overlay.java +++ b/client/src/main/java/com/vaadin/client/widgets/Overlay.java @@ -33,7 +33,6 @@ import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.logical.shared.CloseEvent; import com.google.gwt.event.logical.shared.CloseHandler; import com.google.gwt.user.client.Command; -import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.RootPanel; @@ -42,7 +41,6 @@ import com.vaadin.client.AnimationUtil; import com.vaadin.client.AnimationUtil.AnimationEndListener; import com.vaadin.client.BrowserInfo; import com.vaadin.client.ComputedStyle; -import com.vaadin.client.WidgetUtil; /** * Overlay widget extending the PopupPanel. Overlay is used to float elements on @@ -51,34 +49,9 @@ import com.vaadin.client.WidgetUtil; * <b>Note:</b> This class should always be constructed with * {@link GWT#create(Class)}. * - * <h3>Shadow</h3> - * <p> - * The separate shadow element underneath the main overlay element is <strong> - * <em>deprecated</em></strong>, and should not be used for new overlay - * components. CSS box-shadow should be used instead of a separate shadow - * element. Remember to include any vendor-prefixed versions to support all - * browsers that you need to. To cover all possible browsers that Vaadin 7 - * supports, add <code>-webkit-box-shadow</code> and the standard - * <code>box-shadow</code> properties. - * </p> - * - * <p> - * For IE8, which doesn't support CSS box-shadow, you can use the proprietary - * DropShadow filter. It doesn't provide the exact same features as box-shadow, - * but it is suitable for graceful degradation. Other options are to use a - * border or a pseudo-element underneath the overlay which mimics a shadow, or - * any combination of these. - * </p> - * - * <p> - * Read more about the DropShadow filter from - * <a href="http://msdn.microsoft.com/en-us/library/ms532985(v=vs.85).aspx" - * >Microsoft Developer Network</a> - * </p> - * * @since 7.6.1 */ -public class Overlay extends PopupPanel implements CloseHandler<PopupPanel> { +public class Overlay extends PopupPanel { @Override protected void onAttach() { @@ -186,15 +159,6 @@ public class Overlay extends PopupPanel implements CloseHandler<PopupPanel> { */ public static final String ADDITIONAL_CLASSNAME_ANIMATE_OUT = "animate-out"; - /** - * The shadow element for this overlay. - * - * @deprecated See main JavaDoc for Overlay - * - */ - @Deprecated - private Element shadow; - /* * The creator of this Overlay (the widget that made the instance, not the * layout parent) @@ -208,40 +172,10 @@ public class Overlay extends PopupPanel implements CloseHandler<PopupPanel> { private IFrameElement shimElement; /** - * The HTML snippet that is used to render the actual shadow. In consists of - * nine different DIV-elements with the following class names: - * - * <pre> - * .v-shadow[-stylename] - * ---------------------------------------------- - * | .top-left | .top | .top-right | - * |---------------|-----------|----------------| - * | | | | - * | .left | .center | .right | - * | | | | - * |---------------|-----------|----------------| - * | .bottom-left | .bottom | .bottom-right | - * ---------------------------------------------- - * </pre> - * - * See default theme 'shadow.css' for implementation example. - * - * @deprecated See main JavaDoc for Overlay - */ - @Deprecated - private static final String SHADOW_HTML = "<div aria-hidden=\"true\" class=\"top-left\"></div><div class=\"top\"></div><div class=\"top-right\"></div><div class=\"left\"></div><div class=\"center\"></div><div class=\"right\"></div><div class=\"bottom-left\"></div><div class=\"bottom\"></div><div class=\"bottom-right\"></div>"; - - /** * Matches {@link PopupPanel}.ANIMATION_DURATION */ private static final int POPUP_PANEL_ANIMATION_DURATION = 200; - /** - * @deprecated See main JavaDoc for Overlay - */ - @Deprecated - private boolean sinkShadowEvents = false; - private List<Command> runOnClose = new ArrayList<Command>(); public Overlay() { @@ -259,65 +193,6 @@ public class Overlay extends PopupPanel implements CloseHandler<PopupPanel> { adjustZIndex(); } - /** - * @deprecated See main JavaDoc for Overlay. Use the other constructors - * without the <code>showShadow</code> parameter. - */ - @Deprecated - public Overlay(boolean autoHide, boolean modal, boolean showShadow) { - super(autoHide, modal); - setShadowEnabled(showShadow && useShadowDiv()); - adjustZIndex(); - } - - /** - * Return true if a separate shadow div should be used. Since Vaadin 7.3, - * shadows are implemented with CSS box-shadow. Thus, a shadow div is only - * used for IE8 by default. - * - * @deprecated See main JavaDoc for Overlay - * @since 7.3 - * @return true to use a shadow div - */ - @Deprecated - protected boolean useShadowDiv() { - return BrowserInfo.get().isIE8(); - } - - /** - * Method to control whether DOM elements for shadow are added. With this - * method subclasses can control displaying of shadow also after the - * constructor. - * - * @param enabled - * true if shadow should be displayed - * - * @deprecated See main JavaDoc for Overlay - */ - @Deprecated - protected void setShadowEnabled(boolean enabled) { - if (enabled != isShadowEnabled()) { - if (enabled) { - shadow = DOM.createDiv(); - shadow.setClassName(CLASSNAME_SHADOW); - shadow.setInnerHTML(SHADOW_HTML); - shadow.getStyle().setPosition(Position.ABSOLUTE); - addCloseHandler(this); - } else { - removeShadowIfPresent(); - shadow = null; - } - } - } - - /** - * @deprecated See main JavaDoc for Overlay - */ - @Deprecated - protected boolean isShadowEnabled() { - return shadow != null; - } - protected boolean isShimElementEnabled() { return shimElement != null; } @@ -328,27 +203,6 @@ public class Overlay extends PopupPanel implements CloseHandler<PopupPanel> { } } - /** - * @deprecated See main JavaDoc for Overlay - */ - @Deprecated - private void removeShadowIfPresent() { - if (isShadowAttached()) { - // Remove event listener from the shadow - unsinkShadowEvents(); - - shadow.removeFromParent(); - } - } - - /** - * @deprecated See main JavaDoc for Overlay - */ - @Deprecated - private boolean isShadowAttached() { - return isShadowEnabled() && shadow.getParentElement() != null; - } - private void adjustZIndex() { setZIndex(Z_INDEX); } @@ -361,9 +215,6 @@ public class Overlay extends PopupPanel implements CloseHandler<PopupPanel> { */ protected void setZIndex(int zIndex) { getElement().getStyle().setZIndex(zIndex); - if (isShadowEnabled()) { - shadow.getStyle().setZIndex(zIndex); - } } @Override @@ -553,19 +404,13 @@ public class Overlay extends PopupPanel implements CloseHandler<PopupPanel> { boolean isAttached = isAttached() && isShowing(); super.show(); - // Don't animate if already visible or browser is IE8 or IE9 (no CSS - // animation support) - if (isAttached || BrowserInfo.get().isIE8() - || BrowserInfo.get().isIE9()) { + // Don't animate if already visible + if (isAttached) { return false; } else { // Check if animations are used setVisible(false); addStyleDependentName(ADDITIONAL_CLASSNAME_ANIMATE_IN); - if (isShadowEnabled()) { - shadow.addClassName(CLASSNAME_SHADOW + "-" - + ADDITIONAL_CLASSNAME_ANIMATE_IN); - } ComputedStyle cs = new ComputedStyle(getElement()); String animationName = AnimationUtil.getAnimationName(cs); @@ -589,21 +434,12 @@ public class Overlay extends PopupPanel implements CloseHandler<PopupPanel> { getElement(), animateInListener); removeStyleDependentName( ADDITIONAL_CLASSNAME_ANIMATE_IN); - if (isShadowEnabled()) { - shadow.removeClassName(CLASSNAME_SHADOW - + "-" - + ADDITIONAL_CLASSNAME_ANIMATE_IN); - } } } }); return true; } else { removeStyleDependentName(ADDITIONAL_CLASSNAME_ANIMATE_IN); - if (isShadowEnabled()) { - shadow.removeClassName(CLASSNAME_SHADOW + "-" - + ADDITIONAL_CLASSNAME_ANIMATE_IN); - } return false; } } @@ -614,17 +450,12 @@ public class Overlay extends PopupPanel implements CloseHandler<PopupPanel> { super.onDetach(); // Always ensure shadow is removed when the overlay is removed. - removeShadowIfPresent(); removeShimElement(); } @Override public void setVisible(boolean visible) { super.setVisible(visible); - if (isShadowEnabled()) { - shadow.getStyle().setProperty("visibility", - visible ? "visible" : "hidden"); - } if (isShimElementEnabled()) { shimElement.getStyle().setProperty("visibility", visible ? "visible" : "hidden"); @@ -644,25 +475,6 @@ public class Overlay extends PopupPanel implements CloseHandler<PopupPanel> { } /** - * Sets the shadow style for this overlay. Will override any previous style - * for the shadow. The default style name is defined by CLASSNAME_SHADOW. - * The given style will be prefixed with CLASSNAME_SHADOW. - * - * @param style - * The new style name for the shadow element. Will be prefixed by - * CLASSNAME_SHADOW, e.g. style=='foobar' -> actual style - * name=='v-shadow-foobar'. - * - * @deprecated See main JavaDoc for Overlay - */ - @Deprecated - protected void setShadowStyle(String style) { - if (isShadowEnabled()) { - shadow.setClassName(CLASSNAME_SHADOW + "-" + style); - } - } - - /** * Extending classes should always call this method after they change the * size of overlay without using normal 'setWidth(String)' and * 'setHeight(String)' methods (if not calling super.setWidth/Height). @@ -715,7 +527,7 @@ public class Overlay extends PopupPanel implements CloseHandler<PopupPanel> { getOffsetWidth(); } - if (isShadowEnabled() || needsShimElement()) { + if (needsShimElement()) { PositionAndSize positionAndSize = new PositionAndSize( getActualLeft(), getActualTop(), getOffsetWidth(), @@ -726,14 +538,6 @@ public class Overlay extends PopupPanel implements CloseHandler<PopupPanel> { Element container = getElement().getParentElement(); - if (isShadowEnabled()) { - updateShadowPosition(progress, zIndex, positionAndSize); - if (shadow.getParentElement() == null) { - container.insertBefore(shadow, getElement()); - sinkShadowEvents(); - } - } - if (needsShimElement()) { updateShimPosition(positionAndSize); if (shimElement.getParentElement() == null) { @@ -741,43 +545,6 @@ public class Overlay extends PopupPanel implements CloseHandler<PopupPanel> { } } } - // Fix for #14173 - // IE9 and IE10 have a bug, when resize an a element with box-shadow. - // IE9 and IE10 need explicit update to remove extra box-shadows - if (BrowserInfo.get().isIE9() || BrowserInfo.get().isIE10()) { - WidgetUtil.forceIERedraw(getElement()); - } - } - - /** - * @deprecated See main JavaDoc for Overlay - */ - @Deprecated - private void updateShadowPosition(final double progress, int zIndex, - PositionAndSize positionAndSize) { - // Opera needs some shaking to get parts of the shadow showing - // properly (ticket #2704) - if (BrowserInfo.get().isOpera()) { - // Clear the height of all middle elements - DOM.getChild(shadow, 3).getStyle().setProperty("height", "auto"); - DOM.getChild(shadow, 4).getStyle().setProperty("height", "auto"); - DOM.getChild(shadow, 5).getStyle().setProperty("height", "auto"); - } - - updatePositionAndSize(shadow, positionAndSize); - shadow.getStyle().setZIndex(zIndex); - shadow.getStyle().setProperty("display", progress < 0.9 ? "none" : ""); - - // Opera fix, part 2 (ticket #2704) - if (BrowserInfo.get().isOpera()) { - // We'll fix the height of all the middle elements - DOM.getChild(shadow, 3).getStyle().setPropertyPx("height", - DOM.getChild(shadow, 3).getOffsetHeight()); - DOM.getChild(shadow, 4).getStyle().setPropertyPx("height", - DOM.getChild(shadow, 4).getOffsetHeight()); - DOM.getChild(shadow, 5).getStyle().setPropertyPx("height", - DOM.getChild(shadow, 5).getOffsetHeight()); - } } private void updateShimPosition(PositionAndSize positionAndSize) { @@ -811,72 +578,6 @@ public class Overlay extends PopupPanel implements CloseHandler<PopupPanel> { } } - @Override - public void onClose(CloseEvent<PopupPanel> event) { - removeShadowIfPresent(); - } - - @Override - public void sinkEvents(int eventBitsToAdd) { - super.sinkEvents(eventBitsToAdd); - // Also sink events on the shadow if present - sinkShadowEvents(); - } - - /** - * @deprecated See main JavaDoc for Overlay - */ - @Deprecated - private void sinkShadowEvents() { - if (isSinkShadowEvents() && isShadowAttached()) { - // Sink the same events as the actual overlay has sunk - DOM.sinkEvents(shadow, DOM.getEventsSunk(getElement())); - // Send events to Overlay.onBrowserEvent - DOM.setEventListener(shadow, this); - } - } - - /** - * @deprecated See main JavaDoc for Overlay - */ - @Deprecated - private void unsinkShadowEvents() { - if (isShadowAttached()) { - DOM.setEventListener(shadow, null); - DOM.sinkEvents(shadow, 0); - } - } - - /** - * Enables or disables sinking the events of the shadow to the same - * onBrowserEvent as events to the actual overlay goes. - * - * Please note, that if you enable this, you can't assume that e.g. - * event.getEventTarget returns an element inside the DOM structure of the - * overlay - * - * @param sinkShadowEvents - * - * @deprecated See main JavaDoc for Overlay - */ - @Deprecated - protected void setSinkShadowEvents(boolean sinkShadowEvents) { - this.sinkShadowEvents = sinkShadowEvents; - if (sinkShadowEvents) { - sinkShadowEvents(); - } else { - unsinkShadowEvents(); - } - } - - /** - * @deprecated See main JavaDoc for Overlay - */ - @Deprecated - protected boolean isSinkShadowEvents() { - return sinkShadowEvents; - } - /** * Get owner (Widget that made this Overlay, not the layout parent) of * Overlay @@ -1011,80 +712,59 @@ public class Overlay extends PopupPanel implements CloseHandler<PopupPanel> { */ public void hide(final boolean autoClosed, final boolean animateIn, final boolean animateOut) { - if (BrowserInfo.get().isIE8() || BrowserInfo.get().isIE9()) { - reallyHide(autoClosed); + if (animateIn + && getStyleName().contains(ADDITIONAL_CLASSNAME_ANIMATE_IN)) { + AnimationUtil.addAnimationEndListener(getElement(), + new AnimationEndListener() { + @Override + public void onAnimationEnd(NativeEvent event) { + if (AnimationUtil.getAnimationName(event).contains( + ADDITIONAL_CLASSNAME_ANIMATE_IN)) { + reallyHide(autoClosed); + } + } + }); } else { - if (animateIn && getStyleName() - .contains(ADDITIONAL_CLASSNAME_ANIMATE_IN)) { + // Check if animations are used + addStyleDependentName(ADDITIONAL_CLASSNAME_ANIMATE_OUT); + ComputedStyle cs = new ComputedStyle(getElement()); + String animationName = AnimationUtil.getAnimationName(cs); + if (animationName == null) { + animationName = ""; + } + + if (animateOut && animationName + .contains(ADDITIONAL_CLASSNAME_ANIMATE_OUT)) { + // Disable GWT PopupPanel closing animation if used + setAnimationEnabled(false); + AnimationUtil.addAnimationEndListener(getElement(), new AnimationEndListener() { @Override public void onAnimationEnd(NativeEvent event) { - if (AnimationUtil.getAnimationName(event) - .contains( - ADDITIONAL_CLASSNAME_ANIMATE_IN)) { + String animationName = AnimationUtil + .getAnimationName(event); + if (animationName.contains( + ADDITIONAL_CLASSNAME_ANIMATE_OUT)) { + AnimationUtil + .removeAllAnimationEndListeners( + getElement()); + // Remove both animation styles just in + // case + removeStyleDependentName( + ADDITIONAL_CLASSNAME_ANIMATE_IN); + removeStyleDependentName( + ADDITIONAL_CLASSNAME_ANIMATE_OUT); reallyHide(autoClosed); } } }); + // No event previews should happen after the animation has + // started + Overlay.this.setPreviewingAllNativeEvents(false); } else { - // Check if animations are used - addStyleDependentName(ADDITIONAL_CLASSNAME_ANIMATE_OUT); - if (isShadowEnabled()) { - shadow.addClassName(CLASSNAME_SHADOW + "-" - + ADDITIONAL_CLASSNAME_ANIMATE_OUT); - } - ComputedStyle cs = new ComputedStyle(getElement()); - String animationName = AnimationUtil.getAnimationName(cs); - if (animationName == null) { - animationName = ""; - } - - if (animateOut && animationName - .contains(ADDITIONAL_CLASSNAME_ANIMATE_OUT)) { - // Disable GWT PopupPanel closing animation if used - setAnimationEnabled(false); - - AnimationUtil.addAnimationEndListener(getElement(), - new AnimationEndListener() { - @Override - public void onAnimationEnd(NativeEvent event) { - String animationName = AnimationUtil - .getAnimationName(event); - if (animationName.contains( - ADDITIONAL_CLASSNAME_ANIMATE_OUT)) { - AnimationUtil - .removeAllAnimationEndListeners( - getElement()); - // Remove both animation styles just in - // case - removeStyleDependentName( - ADDITIONAL_CLASSNAME_ANIMATE_IN); - removeStyleDependentName( - ADDITIONAL_CLASSNAME_ANIMATE_OUT); - if (isShadowEnabled()) { - shadow.removeClassName( - CLASSNAME_SHADOW + "-" - + ADDITIONAL_CLASSNAME_ANIMATE_IN); - shadow.removeClassName( - CLASSNAME_SHADOW + "-" - + ADDITIONAL_CLASSNAME_ANIMATE_OUT); - } - reallyHide(autoClosed); - } - } - }); - // No event previews should happen after the animation has - // started - Overlay.this.setPreviewingAllNativeEvents(false); - } else { - removeStyleDependentName(ADDITIONAL_CLASSNAME_ANIMATE_OUT); - if (isShadowEnabled()) { - shadow.removeClassName(CLASSNAME_SHADOW + "-" - + ADDITIONAL_CLASSNAME_ANIMATE_OUT); - } - reallyHide(autoClosed); - } + removeStyleDependentName(ADDITIONAL_CLASSNAME_ANIMATE_OUT); + reallyHide(autoClosed); } } } diff --git a/client/src/main/resources/com/vaadin/Vaadin.gwt.xml b/client/src/main/resources/com/vaadin/Vaadin.gwt.xml index 35b225560e..739225e594 100644 --- a/client/src/main/resources/com/vaadin/Vaadin.gwt.xml +++ b/client/src/main/resources/com/vaadin/Vaadin.gwt.xml @@ -13,8 +13,6 @@ <inherits name="com.google.gwt.logging.Logging" /> <set-property name="gwt.logging.enabled" value="TRUE" /> - <inherits name="com.vaadin.VaadinBrowserSpecificOverrides" /> - <source path="client" /> <source path="shared" /> @@ -42,8 +40,7 @@ <!-- Use the new cross site linker to get a nocache.js without document.write --> <add-linker name="xsiframe" /> - <!-- Remove IE6/IE7 permutation as they are not supported --> - <set-property name="user.agent" value="ie8,ie9,ie10,gecko1_8,safari" /> + <set-property name="user.agent" value="gecko1_8,safari" /> <!-- Pointer event support --> <define-property name="modernie" values="none,yes" /> @@ -75,11 +72,6 @@ </none> </replace-with> - <replace-with class="com.vaadin.client.event.PointerEventSupportImplIE10"> - <when-type-is class="com.vaadin.client.event.PointerEventSupportImpl" /> - <when-property-is value="ie10" name="user.agent" /> - </replace-with> - <replace-with class="com.vaadin.client.communication.DefaultConnectionStateHandler"> <when-type-is diff --git a/client/src/main/resources/com/vaadin/VaadinBrowserSpecificOverrides.gwt.xml b/client/src/main/resources/com/vaadin/VaadinBrowserSpecificOverrides.gwt.xml deleted file mode 100644 index ceedde50a6..0000000000 --- a/client/src/main/resources/com/vaadin/VaadinBrowserSpecificOverrides.gwt.xml +++ /dev/null @@ -1,47 +0,0 @@ -<module> - <!-- This GWT module defines the browser specific overrides used by Vaadin --> - - <!-- Hint for WidgetSetBuilder not to automatically update the file --> - <!-- WS Compiler: manually edited --> - - <!-- Fall through to this rule for everything but IE --> - <replace-with - class="com.vaadin.client.ui.upload.UploadIFrameOnloadStrategy"> - <when-type-is - class="com.vaadin.client.ui.upload.UploadIFrameOnloadStrategy" /> - </replace-with> - - <replace-with - class="com.vaadin.client.ui.upload.UploadIFrameOnloadStrategyIE"> - <when-type-is - class="com.vaadin.client.ui.upload.UploadIFrameOnloadStrategy" /> - <any> - <when-property-is name="user.agent" value="ie8" /> - </any> - </replace-with> - - <!-- Fall through to this rule for everything but IE --> - <replace-with class="com.vaadin.client.ui.VDragAndDropWrapper"> - <when-type-is class="com.vaadin.client.ui.VDragAndDropWrapper" /> - </replace-with> - - <replace-with class="com.vaadin.client.ui.VDragAndDropWrapperIE"> - <when-type-is class="com.vaadin.client.ui.VDragAndDropWrapper" /> - <any> - <when-property-is name="user.agent" value="ie8" /> - </any> - </replace-with> - - <!-- Fall through to this rule for everything but IE --> - <replace-with class="com.vaadin.client.LayoutManager"> - <when-type-is class="com.vaadin.client.LayoutManager" /> - </replace-with> - - <replace-with class="com.vaadin.client.LayoutManagerIE8"> - <when-type-is class="com.vaadin.client.LayoutManager" /> - <any> - <when-property-is name="user.agent" value="ie8" /> - </any> - </replace-with> - -</module> diff --git a/client/src/test/java/com/vaadin/client/VBrowserDetailsUserAgentParserTest.java b/client/src/test/java/com/vaadin/client/VBrowserDetailsUserAgentParserTest.java index c7eaf306fe..a52c5d63a9 100644 --- a/client/src/test/java/com/vaadin/client/VBrowserDetailsUserAgentParserTest.java +++ b/client/src/test/java/com/vaadin/client/VBrowserDetailsUserAgentParserTest.java @@ -22,17 +22,6 @@ public class VBrowserDetailsUserAgentParserTest { private static final String FIREFOX_40B11_WIN = "Mozilla/5.0 (Windows NT 5.1; rv:2.0b11) Gecko/20100101 Firefox/4.0b11"; private static final String KONQUEROR_LINUX = "Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Exabot-Thumbnails)"; - private static final String IE6_WINDOWS = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"; - private static final String IE7_WINDOWS = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"; - - private static final String IE8_WINDOWS = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)"; - private static final String IE8_IN_IE7_MODE_WINDOWS = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)"; - - private static final String IE9_IN_IE7_MODE_WINDOWS_7 = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)"; - private static final String IE9_BETA_IN_IE8_MODE_WINDOWS_7 = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)"; - private static final String IE9_BETA_WINDOWS_7 = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"; - - private static final String IE10_WINDOWS_8 = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"; private static final String IE11_WINDOWS_7 = "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; rv:11.0) like Gecko"; private static final String IE11_WINDOWS_PHONE_8_1_UPDATE = "Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920) Like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537"; @@ -344,106 +333,6 @@ public class VBrowserDetailsUserAgentParserTest { } @Test - public void testIE6() { - VBrowserDetails bd = new VBrowserDetails(IE6_WINDOWS); - assertEngineVersion(bd, -1); - assertIE(bd); - assertBrowserMajorVersion(bd, 6); - assertBrowserMinorVersion(bd, 0); - assertWindows(bd); - } - - @Test - public void testIE7() { - VBrowserDetails bd = new VBrowserDetails(IE7_WINDOWS); - assertEngineVersion(bd, -1); - assertIE(bd); - assertBrowserMajorVersion(bd, 7); - assertBrowserMinorVersion(bd, 0); - assertWindows(bd); - } - - @Test - public void testIE8() { - VBrowserDetails bd = new VBrowserDetails(IE8_WINDOWS); - assertTrident(bd); - assertEngineVersion(bd, 4); - assertIE(bd); - assertBrowserMajorVersion(bd, 8); - assertBrowserMinorVersion(bd, 0); - assertWindows(bd); - } - - @Test - public void testIE8CompatibilityMode() { - VBrowserDetails bd = new VBrowserDetails(IE8_IN_IE7_MODE_WINDOWS); - bd.setIEMode(7); - - assertTrident(bd); - assertEngineVersion(bd, 4); - assertIE(bd); - assertBrowserMajorVersion(bd, 7); - assertBrowserMinorVersion(bd, 0); - - assertWindows(bd); - } - - @Test - public void testIE9() { - VBrowserDetails bd = new VBrowserDetails(IE9_BETA_WINDOWS_7); - assertTrident(bd); - assertEngineVersion(bd, 5); - assertIE(bd); - assertBrowserMajorVersion(bd, 9); - assertBrowserMinorVersion(bd, 0); - assertWindows(bd); - } - - @Test - public void testIE9InIE7CompatibilityMode() { - VBrowserDetails bd = new VBrowserDetails(IE9_IN_IE7_MODE_WINDOWS_7); - // bd.setIE8InCompatibilityMode(); - - assertTrident(bd); - assertEngineVersion(bd, 5); - assertIE(bd); - assertBrowserMajorVersion(bd, 7); - assertBrowserMinorVersion(bd, 0); - - assertWindows(bd); - } - - @Test - public void testIE9InIE8CompatibilityMode() { - VBrowserDetails bd = new VBrowserDetails( - IE9_BETA_IN_IE8_MODE_WINDOWS_7); - // bd.setIE8InCompatibilityMode(); - - /* - * Trident/4.0 in example user agent string based on beta even though it - * should be Trident/5.0 in real (non-beta) user agent strings - */ - assertTrident(bd); - assertEngineVersion(bd, 4); - assertIE(bd); - assertBrowserMajorVersion(bd, 8); - assertBrowserMinorVersion(bd, 0); - - assertWindows(bd); - } - - @Test - public void testIE10() { - VBrowserDetails bd = new VBrowserDetails(IE10_WINDOWS_8); - assertTrident(bd); - assertEngineVersion(bd, 6); - assertIE(bd); - assertBrowserMajorVersion(bd, 10); - assertBrowserMinorVersion(bd, 0); - assertWindows(bd); - } - - @Test public void testIE11() { VBrowserDetails bd = new VBrowserDetails(IE11_WINDOWS_7); assertTrident(bd); @@ -679,3 +568,4 @@ public class VBrowserDetailsUserAgentParserTest { } } + |