| OLD | NEW |
| (Empty) |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 package org.chromium.content.browser; | |
| 6 | |
| 7 import android.test.InstrumentationTestCase; | |
| 8 import android.test.suitebuilder.annotation.MediumTest; | |
| 9 | |
| 10 import org.chromium.base.CommandLine; | |
| 11 import org.chromium.base.test.util.Feature; | |
| 12 import org.chromium.content.app.LibraryLoader; | |
| 13 import org.chromium.content.common.ProcessInitException; | |
| 14 import org.chromium.content_shell_apk.ContentShellActivity; | |
| 15 import org.chromium.content_shell_apk.ContentShellApplication; | |
| 16 | |
| 17 public class ContentCommandLineTest extends InstrumentationTestCase { | |
| 18 // A reference command line. Note that switch2 is [brea\d], switch3 is [and
"butter"], | |
| 19 // and switch4 is [a "quoted" 'food'!] | |
| 20 static final String INIT_SWITCHES[] = { "init_command", "--SWITCH", "Arg", | |
| 21 "--switch2=brea\\d", "--switch3=and \"butter\"", | |
| 22 "--switch4=a \"quoted\" 'food'!", | |
| 23 "--", "--actually_an_arg" }; | |
| 24 | |
| 25 // The same command line, but in quoted string format. | |
| 26 static final char INIT_SWITCHES_BUFFER[] = | |
| 27 ("init_command --SWITCH Arg --switch2=brea\\d --switch3=\"and \\\"butt\"
er\\\" " | |
| 28 + "--switch4='a \"quoted\" \\'food\\'!' " | |
| 29 + "-- --actually_an_arg").toCharArray(); | |
| 30 | |
| 31 static final String CL_ADDED_SWITCH = "zappo-dappo-doggy-trainer"; | |
| 32 static final String CL_ADDED_SWITCH_2 = "username"; | |
| 33 static final String CL_ADDED_VALUE_2 = "bozo"; | |
| 34 | |
| 35 @Override | |
| 36 public void setUp() throws Exception { | |
| 37 CommandLine.reset(); | |
| 38 } | |
| 39 | |
| 40 void loadJni() { | |
| 41 assertFalse(CommandLine.getInstance().isNativeImplementation()); | |
| 42 getInstrumentation().runOnMainSync(new Runnable() { | |
| 43 @Override | |
| 44 public void run() { | |
| 45 ContentShellApplication.initializeApplicationParameters(); | |
| 46 try { | |
| 47 LibraryLoader.ensureInitialized(); | |
| 48 } catch (ProcessInitException e) { | |
| 49 throw new Error(e); | |
| 50 } | |
| 51 } | |
| 52 }); | |
| 53 assertTrue(CommandLine.getInstance().isNativeImplementation()); | |
| 54 } | |
| 55 | |
| 56 void checkInitSwitches() { | |
| 57 CommandLine cl = CommandLine.getInstance(); | |
| 58 assertFalse(cl.hasSwitch("init_command")); | |
| 59 assertFalse(cl.hasSwitch("switch")); | |
| 60 assertTrue(cl.hasSwitch("SWITCH")); | |
| 61 assertFalse(cl.hasSwitch("--SWITCH")); | |
| 62 assertFalse(cl.hasSwitch("Arg")); | |
| 63 assertFalse(cl.hasSwitch("actually_an_arg")); | |
| 64 assertEquals("brea\\d", cl.getSwitchValue("switch2")); | |
| 65 assertEquals("and \"butter\"", cl.getSwitchValue("switch3")); | |
| 66 assertEquals("a \"quoted\" 'food'!", cl.getSwitchValue("switch4")); | |
| 67 assertNull(cl.getSwitchValue("SWITCH")); | |
| 68 assertNull(cl.getSwitchValue("non-existant")); | |
| 69 } | |
| 70 | |
| 71 void checkSettingThenGetting() { | |
| 72 CommandLine cl = CommandLine.getInstance(); | |
| 73 | |
| 74 // Add a plain switch. | |
| 75 assertFalse(cl.hasSwitch(CL_ADDED_SWITCH)); | |
| 76 cl.appendSwitch(CL_ADDED_SWITCH); | |
| 77 assertTrue(cl.hasSwitch(CL_ADDED_SWITCH)); | |
| 78 | |
| 79 // Add a switch paired with a value. | |
| 80 assertFalse(cl.hasSwitch(CL_ADDED_SWITCH_2)); | |
| 81 assertNull(cl.getSwitchValue(CL_ADDED_SWITCH_2)); | |
| 82 cl.appendSwitchWithValue(CL_ADDED_SWITCH_2, CL_ADDED_VALUE_2); | |
| 83 assertTrue(CL_ADDED_VALUE_2.equals(cl.getSwitchValue(CL_ADDED_SWITCH_2))
); | |
| 84 | |
| 85 // Append a few new things. | |
| 86 final String switchesAndArgs[] = { "dummy", "--superfast", "--speed=turb
o" }; | |
| 87 assertFalse(cl.hasSwitch("dummy")); | |
| 88 assertFalse(cl.hasSwitch("superfast")); | |
| 89 assertNull(cl.getSwitchValue("speed")); | |
| 90 cl.appendSwitchesAndArguments(switchesAndArgs); | |
| 91 assertFalse(cl.hasSwitch("dummy")); | |
| 92 assertFalse(cl.hasSwitch("command")); | |
| 93 assertTrue(cl.hasSwitch("superfast")); | |
| 94 assertTrue("turbo".equals(cl.getSwitchValue("speed"))); | |
| 95 } | |
| 96 | |
| 97 void checkAppendedSwitchesPassedThrough() { | |
| 98 CommandLine cl = CommandLine.getInstance(); | |
| 99 assertTrue(cl.hasSwitch(CL_ADDED_SWITCH)); | |
| 100 assertTrue(cl.hasSwitch(CL_ADDED_SWITCH_2)); | |
| 101 assertTrue(CL_ADDED_VALUE_2.equals(cl.getSwitchValue(CL_ADDED_SWITCH_2))
); | |
| 102 } | |
| 103 | |
| 104 @MediumTest | |
| 105 @Feature({"Android-AppBase"}) | |
| 106 public void testJavaNativeTransition() { | |
| 107 CommandLine.init(INIT_SWITCHES); | |
| 108 checkInitSwitches(); | |
| 109 loadJni(); | |
| 110 checkInitSwitches(); | |
| 111 checkSettingThenGetting(); | |
| 112 } | |
| 113 | |
| 114 @MediumTest | |
| 115 @Feature({"Android-AppBase"}) | |
| 116 public void testJavaNativeTransitionAfterAppends() { | |
| 117 CommandLine.init(INIT_SWITCHES); | |
| 118 checkInitSwitches(); | |
| 119 checkSettingThenGetting(); | |
| 120 loadJni(); | |
| 121 checkInitSwitches(); | |
| 122 checkAppendedSwitchesPassedThrough(); | |
| 123 } | |
| 124 | |
| 125 @MediumTest | |
| 126 @Feature({"Android-AppBase"}) | |
| 127 public void testNativeInitialization() { | |
| 128 CommandLine.init(null); | |
| 129 loadJni(); | |
| 130 // Drop the program name for use with appendSwitchesAndArguments. | |
| 131 String[] args = new String[INIT_SWITCHES.length - 1]; | |
| 132 System.arraycopy(INIT_SWITCHES, 1, args, 0, args.length); | |
| 133 CommandLine.getInstance().appendSwitchesAndArguments(args); | |
| 134 checkInitSwitches(); | |
| 135 checkSettingThenGetting(); | |
| 136 } | |
| 137 | |
| 138 @MediumTest | |
| 139 @Feature({"Android-AppBase"}) | |
| 140 public void testFileInitialization() { | |
| 141 CommandLine.initFromFile(ContentShellActivity.COMMAND_LINE_FILE); | |
| 142 loadJni(); | |
| 143 checkSettingThenGetting(); | |
| 144 } | |
| 145 } | |
| OLD | NEW |