From b288329da7c17b2ebf16069621d5fddd9cb5fcc1 Mon Sep 17 00:00:00 2001 From: Denis Anisimov Date: Sun, 7 Sep 2014 17:39:56 +0300 Subject: [PATCH] WebBrowser.isWindowsPhone() is added (#14425). Change-Id: Ia279c4da78ca04e0d3727b605e2ce68b99e8cd65 --- .../client/TestVBrowserDetailsUserAgentParser.java | 10 +++++++++- server/src/com/vaadin/server/WebBrowser.java | 11 +++++++++++ shared/src/com/vaadin/shared/VBrowserDetails.java | 12 ++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/client/tests/src/com/vaadin/client/TestVBrowserDetailsUserAgentParser.java b/client/tests/src/com/vaadin/client/TestVBrowserDetailsUserAgentParser.java index e38054e3e4..dd892b19ec 100644 --- a/client/tests/src/com/vaadin/client/TestVBrowserDetailsUserAgentParser.java +++ b/client/tests/src/com/vaadin/client/TestVBrowserDetailsUserAgentParser.java @@ -2,6 +2,8 @@ package com.vaadin.client; import junit.framework.TestCase; +import org.junit.Assert; + import com.vaadin.shared.VBrowserDetails; public class TestVBrowserDetailsUserAgentParser extends TestCase { @@ -404,7 +406,7 @@ public class TestVBrowserDetailsUserAgentParser extends TestCase { assertIE(bd); assertBrowserMajorVersion(bd, 11); assertBrowserMinorVersion(bd, 0); - assertWindows(bd); + assertWindows(bd, true); } /* @@ -538,11 +540,17 @@ public class TestVBrowserDetailsUserAgentParser extends TestCase { } private void assertWindows(VBrowserDetails browserDetails) { + assertWindows(browserDetails, false); + } + + private void assertWindows(VBrowserDetails browserDetails, + boolean isWindowsPhone) { assertFalse(browserDetails.isLinux()); assertTrue(browserDetails.isWindows()); assertFalse(browserDetails.isMacOSX()); assertFalse(browserDetails.isIOS()); assertFalse(browserDetails.isAndroid()); + Assert.assertEquals(isWindowsPhone, browserDetails.isWindowsPhone()); } private void assertLinux(VBrowserDetails browserDetails) { diff --git a/server/src/com/vaadin/server/WebBrowser.java b/server/src/com/vaadin/server/WebBrowser.java index af20bcbb8f..5ec4e6b19c 100644 --- a/server/src/com/vaadin/server/WebBrowser.java +++ b/server/src/com/vaadin/server/WebBrowser.java @@ -258,6 +258,17 @@ public class WebBrowser implements Serializable { return browserDetails.isWindows(); } + /** + * Tests whether the user is using Windows Phone. + * + * @return true if the user is using Windows Phone, false if the user is not + * using Windows Phone or if no information on the browser is + * present + */ + public boolean isWindowsPhone() { + return browserDetails.isWindowsPhone(); + } + /** * Tests if the browser is run on Android. * diff --git a/shared/src/com/vaadin/shared/VBrowserDetails.java b/shared/src/com/vaadin/shared/VBrowserDetails.java index 81a39cdedc..3c89bdb6bb 100644 --- a/shared/src/com/vaadin/shared/VBrowserDetails.java +++ b/shared/src/com/vaadin/shared/VBrowserDetails.java @@ -42,6 +42,8 @@ public class VBrowserDetails implements Serializable { private boolean isOpera = false; private boolean isIE = false; + private boolean isWindowsPhone; + private OperatingSystem os = OperatingSystem.UNKNOWN; public enum OperatingSystem { @@ -162,6 +164,7 @@ public class VBrowserDetails implements Serializable { // Operating system if (userAgent.contains("windows ")) { os = OperatingSystem.WINDOWS; + isWindowsPhone = userAgent.contains("windows phone"); } else if (userAgent.contains("linux")) { if (userAgent.contains("android")) { os = OperatingSystem.ANDROID; @@ -424,6 +427,15 @@ public class VBrowserDetails implements Serializable { return os == OperatingSystem.WINDOWS; } + /** + * Tests if the browser is run on Windows Phone. + * + * @return true if run on Windows Phone, false otherwise + */ + public boolean isWindowsPhone() { + return isWindowsPhone; + } + /** * Tests if the browser is run on Mac OSX. * -- 2.39.5