aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/tests/functests/layoutRendering/ApiDemosRenderingTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/tests/functests/layoutRendering/ApiDemosRenderingTest.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/tests/functests/layoutRendering/ApiDemosRenderingTest.java328
1 files changed, 0 insertions, 328 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/tests/functests/layoutRendering/ApiDemosRenderingTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/tests/functests/layoutRendering/ApiDemosRenderingTest.java
deleted file mode 100644
index d6b401b62..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/tests/functests/layoutRendering/ApiDemosRenderingTest.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php
- *
- * 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.android.ide.eclipse.tests.functests.layoutRendering;
-
-import com.android.SdkConstants;
-import com.android.ide.common.rendering.LayoutLibrary;
-import com.android.ide.common.rendering.api.ActionBarCallback;
-import com.android.ide.common.rendering.api.AdapterBinding;
-import com.android.ide.common.rendering.api.HardwareConfig;
-import com.android.ide.common.rendering.api.ILayoutPullParser;
-import com.android.ide.common.rendering.api.IProjectCallback;
-import com.android.ide.common.rendering.api.RenderSession;
-import com.android.ide.common.rendering.api.ResourceReference;
-import com.android.ide.common.rendering.api.ResourceValue;
-import com.android.ide.common.rendering.api.SessionParams;
-import com.android.ide.common.rendering.api.SessionParams.RenderingMode;
-import com.android.ide.common.resources.ResourceItem;
-import com.android.ide.common.resources.ResourceRepository;
-import com.android.ide.common.resources.ResourceResolver;
-import com.android.ide.common.resources.configuration.DensityQualifier;
-import com.android.ide.common.resources.configuration.FolderConfiguration;
-import com.android.ide.common.resources.configuration.KeyboardStateQualifier;
-import com.android.ide.common.resources.configuration.NavigationMethodQualifier;
-import com.android.ide.common.resources.configuration.NavigationStateQualifier;
-import com.android.ide.common.resources.configuration.ScreenDimensionQualifier;
-import com.android.ide.common.resources.configuration.ScreenHeightQualifier;
-import com.android.ide.common.resources.configuration.ScreenOrientationQualifier;
-import com.android.ide.common.resources.configuration.ScreenRatioQualifier;
-import com.android.ide.common.resources.configuration.ScreenSizeQualifier;
-import com.android.ide.common.resources.configuration.ScreenWidthQualifier;
-import com.android.ide.common.resources.configuration.SmallestScreenWidthQualifier;
-import com.android.ide.common.resources.configuration.TextInputMethodQualifier;
-import com.android.ide.common.resources.configuration.TouchScreenQualifier;
-import com.android.ide.common.sdk.LoadStatus;
-import com.android.ide.eclipse.adt.internal.resources.manager.ResourceManager;
-import com.android.ide.eclipse.adt.internal.sdk.AndroidTargetData;
-import com.android.ide.eclipse.tests.SdkLoadingTestCase;
-import com.android.io.FolderWrapper;
-import com.android.resources.Density;
-import com.android.resources.Keyboard;
-import com.android.resources.KeyboardState;
-import com.android.resources.Navigation;
-import com.android.resources.NavigationState;
-import com.android.resources.ResourceType;
-import com.android.resources.ScreenOrientation;
-import com.android.resources.ScreenRatio;
-import com.android.resources.ScreenSize;
-import com.android.resources.TouchScreen;
-import com.android.sdklib.IAndroidTarget;
-import com.android.util.Pair;
-
-import org.kxml2.io.KXmlParser;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.imageio.ImageIO;
-
-public class ApiDemosRenderingTest extends SdkLoadingTestCase {
-
- /**
- * Custom parser that implements {@link ILayoutPullParser} (which itself extends
- * {@link XmlPullParser}).
- */
- private final static class TestParser extends KXmlParser implements ILayoutPullParser {
- /**
- * Since we're not going to go through the result of the rendering/layout, we can return
- * null for the View Key.
- */
- @Override
- public Object getViewCookie() {
- return null;
- }
-
- @Override
- public ILayoutPullParser getParser(String layoutName) {
- return null;
- }
- }
-
- private final static class ProjectCallBack implements IProjectCallback {
- // resource id counter.
- // We start at 0x7f000000 to avoid colliding with the framework id
- // since we have no access to the project R.java and we need to generate them automatically.
- private int mIdCounter = 0x7f000000;
-
- // in some cases, the id that getResourceValue(String type, String name) returns
- // will be sent back to get the type/name. This map stores the id/type/name we generate
- // to be able to do the reverse resolution.
- private Map<Integer, Pair<ResourceType, String>> mResourceMap =
- new HashMap<Integer, Pair<ResourceType, String>>();
-
- private boolean mCustomViewAttempt = false;
-
- @Override
- public String getNamespace() {
- // TODO: read from the ApiDemos manifest.
- return "com.example.android.apis";
- }
-
- @Override
- @SuppressWarnings("unchecked")
- public Object loadView(String name, Class[] constructorSignature, Object[] constructorArgs)
- throws ClassNotFoundException, Exception {
- mCustomViewAttempt = true;
- return null;
- }
-
- @Override
- public Integer getResourceId(ResourceType type, String name) {
- Integer result = ++mIdCounter;
- mResourceMap.put(result, Pair.of(type, name));
- return result;
- }
-
- @Override
- public Pair<ResourceType, String> resolveResourceId(int id) {
- return mResourceMap.get(id);
- }
-
- @Override
- public String resolveResourceId(int[] id) {
- return null;
- }
-
- @Override
- public ILayoutPullParser getParser(String layoutName) {
- return null;
- }
-
- @Override
- public Object getAdapterItemValue(ResourceReference adapterView, Object adapterCookie,
- ResourceReference itemRef, int fullPosition, int typePosition,
- int fullChildPosition, int typeChildPosition,
- ResourceReference viewRef, ViewAttribute viewAttribute, Object defaultValue) {
- return null;
- }
-
- @Override
- public AdapterBinding getAdapterBinding(ResourceReference adapterView,
- Object adapterCookie, Object viewObject) {
- return null;
- }
-
- @Override
- public ILayoutPullParser getParser(ResourceValue layoutResource) {
- return null;
- }
-
- @Override
- public ActionBarCallback getActionBarCallback() {
- return new ActionBarCallback();
- }
- }
-
- public void testApiDemos() throws IOException, XmlPullParserException {
- findApiDemos();
- }
-
- private void findApiDemos() throws IOException, XmlPullParserException {
- IAndroidTarget[] targets = getSdk().getTargets();
-
- for (IAndroidTarget target : targets) {
- String path = target.getPath(IAndroidTarget.SAMPLES);
- File samples = new File(path);
- if (samples.isDirectory()) {
- File[] files = samples.listFiles();
- for (File file : files) {
- if ("apidemos".equalsIgnoreCase(file.getName())) {
- testSample(target, file);
- return;
- }
- }
- }
- }
-
- fail("Failed to find ApiDemos!");
- }
-
- private void testSample(IAndroidTarget target, File sampleProject) throws IOException, XmlPullParserException {
- AndroidTargetData data = getSdk().getTargetData(target);
- if (data == null) {
- fail("No AndroidData!");
- }
-
- LayoutLibrary layoutLib = data.getLayoutLibrary();
- if (layoutLib.getStatus() != LoadStatus.LOADED) {
- fail("Fail to load the bridge: " + layoutLib.getLoadMessage());
- }
-
- FolderWrapper resFolder = new FolderWrapper(sampleProject, SdkConstants.FD_RES);
- if (resFolder.exists() == false) {
- fail("Sample project has no res folder!");
- }
-
- // look for the layout folder
- File layoutFolder = new File(resFolder, SdkConstants.FD_RES_LAYOUT);
- if (layoutFolder.isDirectory() == false) {
- fail("Sample project has no layout folder!");
- }
-
- // first load the project's target framework resource
- ResourceRepository framework = ResourceManager.getInstance().loadFrameworkResources(target);
-
- // now load the project resources
- ResourceRepository project = new ResourceRepository(resFolder, false) {
- @Override
- protected ResourceItem createResourceItem(String name) {
- return new ResourceItem(name);
- }
-
- };
-
- // Create a folder configuration that will be used for the rendering:
- FolderConfiguration config = getConfiguration();
-
- // get the configured resources
- Map<ResourceType, Map<String, ResourceValue>> configuredFramework =
- framework.getConfiguredResources(config);
- Map<ResourceType, Map<String, ResourceValue>> configuredProject =
- project.getConfiguredResources(config);
-
- boolean saveFiles = System.getenv("save_file") != null;
-
- // loop on the layouts and render them
- File[] layouts = layoutFolder.listFiles();
- for (File layout : layouts) {
- // create a parser for the layout file
- TestParser parser = new TestParser();
- parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
- parser.setInput(new FileReader(layout));
-
- System.out.println("Rendering " + layout.getName());
-
- ProjectCallBack projectCallBack = new ProjectCallBack();
-
- ResourceResolver resolver = ResourceResolver.create(
- configuredProject, configuredFramework,
- "Theme", false /*isProjectTheme*/);
-
- HardwareConfig hardwareConfig = new HardwareConfig(
- 320,
- 480,
- Density.MEDIUM,
- 160, //xdpi
- 160, // ydpi
- ScreenSize.NORMAL,
- ScreenOrientation.PORTRAIT,
- false /*software buttons */);
-
- RenderSession session = layoutLib.createSession(new SessionParams(
- parser,
- RenderingMode.NORMAL,
- null /*projectKey*/,
- hardwareConfig,
- resolver,
- projectCallBack,
- 1, // minSdkVersion
- 1, // targetSdkVersion
- null //logger
- ));
-
- if (session.getResult().isSuccess() == false) {
- if (projectCallBack.mCustomViewAttempt == false) {
- System.out.println("FAILED");
- fail(String.format("Rendering %1$s: %2$s", layout.getName(),
- session.getResult().getErrorMessage()));
- } else {
- System.out.println("Ignore custom views for now");
- }
- } else {
- if (saveFiles) {
- File tmp = File.createTempFile(layout.getName(), ".png");
- ImageIO.write(session.getImage(), "png", tmp);
- }
- System.out.println("Success!");
- }
- }
- }
-
- /**
- * Returns a config. This must be a valid config like a device would return. This is to
- * prevent issues where some resources don't exist in all cases and not in the default
- * (for instance only available in hdpi and mdpi but not in default).
- * @return
- */
- private FolderConfiguration getConfiguration() {
- FolderConfiguration config = new FolderConfiguration();
-
- // this matches an ADP1.
- config.addQualifier(new SmallestScreenWidthQualifier(320));
- config.addQualifier(new ScreenWidthQualifier(320));
- config.addQualifier(new ScreenHeightQualifier(480));
- config.addQualifier(new ScreenSizeQualifier(ScreenSize.NORMAL));
- config.addQualifier(new ScreenRatioQualifier(ScreenRatio.NOTLONG));
- config.addQualifier(new ScreenOrientationQualifier(ScreenOrientation.PORTRAIT));
- config.addQualifier(new DensityQualifier(Density.MEDIUM));
- config.addQualifier(new TouchScreenQualifier(TouchScreen.FINGER));
- config.addQualifier(new KeyboardStateQualifier(KeyboardState.HIDDEN));
- config.addQualifier(new TextInputMethodQualifier(Keyboard.QWERTY));
- config.addQualifier(new NavigationStateQualifier(NavigationState.HIDDEN));
- config.addQualifier(new NavigationMethodQualifier(Navigation.TRACKBALL));
- config.addQualifier(new ScreenDimensionQualifier(480, 320));
-
- config.updateScreenWidthAndHeight();
-
- return config;
- }
-}