summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2009-01-27 13:16:28 -0800
committerShawn O. Pearce <sop@google.com>2009-01-27 14:40:24 -0800
commitd1f5c36809c6abbf3c4179eb70a9704df7d3743b (patch)
tree1bf80181f0842fc6f31875954f45bcf318a1094b
parentf04ff6b5047d1ff574827e51135efd13959e518c (diff)
Don't use <iframe> for sign-in on a mobile device
Trying to use the <iframe> based sign-in on an Android or an iPhone/iPod mobile device is very difficult. The total screen space is just too small to float the window onto. Signed-off-by: Shawn O. Pearce <sop@google.com>
-rw-r--r--appjar/src/main/java/com/google/gerrit/Gerrit.gwt.xml12
-rw-r--r--appjar/src/main/java/com/google/gerrit/UserAgent.gwt.xml37
-rw-r--r--appjar/src/main/java/com/google/gerrit/client/openid/AllowFrameImplMobile.java24
3 files changed, 62 insertions, 11 deletions
diff --git a/appjar/src/main/java/com/google/gerrit/Gerrit.gwt.xml b/appjar/src/main/java/com/google/gerrit/Gerrit.gwt.xml
index 8ba5d56012..31a53ea4c2 100644
--- a/appjar/src/main/java/com/google/gerrit/Gerrit.gwt.xml
+++ b/appjar/src/main/java/com/google/gerrit/Gerrit.gwt.xml
@@ -3,19 +3,9 @@
<inherits name='com.google.gwtjsonrpc.GWTJSONRPC'/>
<inherits name='com.google.gwtorm.GWTORM'/>
<inherits name='com.google.gwt.user.theme.chrome.Chrome'/>
+ <inherits name='com.google.gerrit.UserAgent'/>
<extend-property name="locale" values="en"/>
- <!-- openid.AllowFrameImpl -->
- <replace-with class="com.google.gerrit.client.openid.AllowFrameImpl">
- <when-type-is class="com.google.gerrit.client.openid.AllowFrameImpl"/>
- </replace-with>
- <replace-with class="com.google.gerrit.client.openid.AllowFrameImplSafari">
- <when-type-is class="com.google.gerrit.client.openid.AllowFrameImpl" />
- <any>
- <when-property-is name="user.agent" value="safari"/>
- </any>
- </replace-with>
- <!-- /openid.AllowFrameImpl -->
<entry-point class='com.google.gerrit.client.Gerrit'/>
<stylesheet src='Gerrit.css' />
diff --git a/appjar/src/main/java/com/google/gerrit/UserAgent.gwt.xml b/appjar/src/main/java/com/google/gerrit/UserAgent.gwt.xml
new file mode 100644
index 0000000000..54f25fb0a0
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/UserAgent.gwt.xml
@@ -0,0 +1,37 @@
+<module>
+ <define-property name="extUserAgent" values="mobile"/>
+ <property-provider name="extUserAgent"><![CDATA[
+ var ua = navigator.userAgent.toLowerCase();
+
+ if (ua.indexOf("safari") != -1) {
+ if (ua.indexOf("iphone") != -1)
+ return "mobile";
+ if (ua.indexOf("ipod") != -1)
+ return "mobile";
+ if (ua.indexOf("android") != -1)
+ return "mobile";
+ }
+ return "unknown";
+ ]]></property-provider>
+
+ <!-- openid.AllowFrameImpl -->
+ <replace-with class="com.google.gerrit.client.openid.AllowFrameImplMobile">
+ <when-type-is class="com.google.gerrit.client.openid.AllowFrameImpl" />
+ <any>
+ <when-property-is name="user.agent" value="safari"/>
+ <when-property-is name="extUserAgent" value="mobile"/>
+ </any>
+ </replace-with>
+
+ <replace-with class="com.google.gerrit.client.openid.AllowFrameImplSafari">
+ <when-type-is class="com.google.gerrit.client.openid.AllowFrameImpl" />
+ <any>
+ <when-property-is name="user.agent" value="safari"/>
+ </any>
+ </replace-with>
+
+ <replace-with class="com.google.gerrit.client.openid.AllowFrameImpl">
+ <when-type-is class="com.google.gerrit.client.openid.AllowFrameImpl"/>
+ </replace-with>
+ <!-- /openid.AllowFrameImpl -->
+</module>
diff --git a/appjar/src/main/java/com/google/gerrit/client/openid/AllowFrameImplMobile.java b/appjar/src/main/java/com/google/gerrit/client/openid/AllowFrameImplMobile.java
new file mode 100644
index 0000000000..c5199d2aac
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/openid/AllowFrameImplMobile.java
@@ -0,0 +1,24 @@
+// Copyright 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.openid;
+
+class AllowFrameImplMobile extends AllowFrameImpl {
+ @Override
+ boolean permit(final String url) {
+ // Working an IFRAME on a tiny device is difficult.
+ //
+ return false;
+ }
+}