Bug 1369817 - Set screen orientation according to webapp manifest r=daleharvey
MozReview-Commit-ID: KvuPsYSalVN
--- a/mobile/android/base/java/org/mozilla/gecko/webapps/WebAppActivity.java
+++ b/mobile/android/base/java/org/mozilla/gecko/webapps/WebAppActivity.java
@@ -7,16 +7,17 @@ package org.mozilla.gecko.webapps;
import java.io.File;
import java.io.IOException;
import java.util.List;
import android.annotation.TargetApi;
import android.app.ActivityManager;
import android.content.Intent;
+import android.content.pm.ActivityInfo;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
@@ -27,16 +28,17 @@ import android.view.WindowManager;
import android.widget.TextView;
import org.json.JSONObject;
import org.json.JSONException;
import org.mozilla.gecko.ActivityHandlerHelper;
import org.mozilla.gecko.AppConstants;
import org.mozilla.gecko.GeckoAppShell;
+import org.mozilla.gecko.GeckoScreenOrientation;
import org.mozilla.gecko.GeckoView;
import org.mozilla.gecko.GeckoViewSettings;
import org.mozilla.gecko.icons.decoders.FaviconDecoder;
import org.mozilla.gecko.icons.decoders.LoadFaviconResult;
import org.mozilla.gecko.prompts.PromptService;
import org.mozilla.gecko.R;
import org.mozilla.gecko.util.ColorUtil;
import org.mozilla.gecko.util.FileUtils;
@@ -146,30 +148,44 @@ public class WebAppActivity extends AppC
mScope = readScopeFromManifest(manifest, manifestPath);
final ActivityManager.TaskDescription taskDescription = (color == null)
? new ActivityManager.TaskDescription(name, icon)
: new ActivityManager.TaskDescription(name, icon, color);
updateStatusBarColorV21(color);
setTaskDescription(taskDescription);
+ updateScreenOrientation(manifestField);
} catch (IOException | JSONException e) {
Log.e(LOGTAG, "Failed to read manifest", e);
}
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void updateStatusBarColorV21(final Integer themeColor) {
if (themeColor != null) {
final Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(ColorUtil.darken(themeColor, 0.25));
}
}
+ private void updateScreenOrientation(JSONObject manifest) {
+ String orientString = manifest.optString("orientation", null);
+ if (orientString == null) {
+ return;
+ }
+
+ GeckoScreenOrientation.ScreenOrientation orientation =
+ GeckoScreenOrientation.screenOrientationFromString(orientString);
+ int activityOrientation = GeckoScreenOrientation.screenOrientationToAndroidOrientation(orientation);
+
+ setRequestedOrientation(activityOrientation);
+ }
+
private Integer readColorFromManifest(JSONObject manifest) {
final String colorStr = manifest.optString("theme_color", null);
if (colorStr != null) {
return ColorUtil.parseStringColor(colorStr);
}
return null;
}