calabash-android 0.4.0.pre6 → 0.4.0.pre7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. data/bin/calabash-android +7 -0
  2. data/bin/calabash-android-build.rb +1 -1
  3. data/bin/calabash-android-console.rb +1 -1
  4. data/bin/calabash-android-run.rb +1 -1
  5. data/calabash-android.gemspec +1 -0
  6. data/irbrc +2 -0
  7. data/lib/calabash-android/helpers.rb +4 -2
  8. data/lib/calabash-android/lib/TestServer.apk +0 -0
  9. data/lib/calabash-android/operations.rb +31 -22
  10. data/lib/calabash-android/version.rb +1 -1
  11. data/test-server/instrumentation-backend/.classpath +0 -1
  12. data/test-server/instrumentation-backend/antlr/UIQuery.g +11 -2
  13. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Command.java +4 -3
  14. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/FranklyResult.java +95 -0
  15. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Result.java +7 -1
  16. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/HttpServer.java +15 -23
  17. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/location/FakeGPSLocation.java +13 -10
  18. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/CalabashChromeClient.java +136 -36
  19. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpBodyHtml.java +38 -18
  20. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpHtml.java +38 -16
  21. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/EnterTextByCssSelector.java +94 -66
  22. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ExecuteAsyncJavascript.java +55 -33
  23. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ExecuteJavascript.java +54 -31
  24. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/JavaScriptOperation.java +44 -0
  25. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/PressByCssSelector.java +52 -27
  26. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/QueryHelper.java +39 -32
  27. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ScrollTo.java +56 -41
  28. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetPropertyByCssSelector.java +50 -25
  29. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetText.java +19 -22
  30. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/CompletedFuture.java +40 -0
  31. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/InvocationOperation.java +201 -0
  32. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Operation.java +7 -0
  33. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/PropertyOperation.java +56 -0
  34. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Query.java +144 -72
  35. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQuery.tokens +15 -12
  36. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQueryResultVoid.java +22 -0
  37. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ViewMapper.java +38 -11
  38. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryLexer.java +226 -109
  39. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryParser.java +237 -84
  40. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/PartialFutureList.java +100 -0
  41. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryAST.java +1 -1
  42. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTClassName.java +26 -22
  43. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTWith.java +170 -102
  44. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryEvaluator.java +54 -155
  45. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryUtils.java +97 -2
  46. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryVisibility.java +32 -0
  47. metadata +27 -5
  48. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Query.java +0 -24
  49. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Touch.java +0 -44
  50. data/test-server/instrumentation-backend/tests/sh/calaba/instrumentationbackend/query/tests/UIQueryTest.java +0 -134
@@ -1,137 +1,72 @@
1
1
  package sh.calaba.instrumentationbackend.query.ast;
2
2
 
3
- import java.io.IOException;
4
- import java.lang.reflect.Method;
5
3
  import java.util.ArrayList;
6
- import java.util.Collections;
7
- import java.util.HashMap;
8
4
  import java.util.List;
9
- import java.util.Map;
10
5
 
11
- import org.antlr.runtime.ANTLRStringStream;
12
- import org.antlr.runtime.CommonTokenStream;
13
- import org.antlr.runtime.RecognitionException;
14
- import org.antlr.runtime.tree.CommonTree;
15
-
16
- import sh.calaba.instrumentationbackend.query.antlr.UIQueryLexer;
17
- import sh.calaba.instrumentationbackend.query.antlr.UIQueryParser;
18
- import sh.calaba.org.codehaus.jackson.map.ObjectMapper;
6
+ import sh.calaba.instrumentationbackend.query.Operation;
7
+ import sh.calaba.instrumentationbackend.query.UIQueryResultVoid;
8
+ import sh.calaba.instrumentationbackend.query.ViewMapper;
19
9
 
20
10
  public class UIQueryEvaluator {
21
-
22
- private static class UIQueryResultVoid {
23
- public static final UIQueryResultVoid instance = new UIQueryResultVoid();
11
+
12
+ @SuppressWarnings({ "rawtypes" })
13
+ public static List evaluateQueryWithOptions(List<UIQueryAST> query, List inputViews,
14
+ List<Operation> operations) {
24
15
 
25
- private UIQueryResultVoid() {}
26
-
27
- @SuppressWarnings({ "rawtypes", "unchecked" })
28
- public String asJSON(String methodName, Object receiver) {
29
- ObjectMapper mapper = new ObjectMapper();
16
+ long before = System.currentTimeMillis();
17
+
18
+ List views = evaluateQueryForPath(query, inputViews);
19
+
20
+ long after = System.currentTimeMillis();
21
+ String action = "EvaluateQuery";
22
+ System.out.println(action+ " took: "+ (after-before) + "ms");
23
+
24
+ before = System.currentTimeMillis();
25
+
26
+ List result = applyOperations(views, operations);
27
+
28
+ after = System.currentTimeMillis();
29
+ action = "ApplyOperations";
30
+ System.out.println(action+ " took: "+ (after-before) + "ms");
30
31
 
31
- try {
32
- Map map = new HashMap();
33
- map.put("error","Unable to invoke method");
34
- map.put("methodName",methodName);
35
- map.put("receiverClass", receiver.getClass().getName());
36
- map.put("receiverString",receiver.toString());
37
- return mapper.writeValueAsString(map);
38
- } catch (IOException e) {
39
- throw new RuntimeException("Could not convert result to json",e);
40
- }
41
- }
32
+ before = System.currentTimeMillis();
33
+
34
+ List finalResult = mapViews(result);
35
+
36
+ after = System.currentTimeMillis();
37
+ action = "MapViews";
38
+ return finalResult;
39
+ }
42
40
 
43
- @SuppressWarnings({ "rawtypes", "unchecked" })
44
- public Object asJSON(String methodName, Object receiver,String errorMessage) {
45
- ObjectMapper mapper = new ObjectMapper();
46
41
 
47
- try {
48
- Map map = new HashMap();
49
- map.put("error",errorMessage);
50
- map.put("methodName",methodName);
51
- map.put("receiverClass", receiver.getClass().getName());
52
- map.put("receiverString",receiver.toString());
53
- return mapper.writeValueAsString(map);
54
- } catch (IOException e) {
55
- throw new RuntimeException("Could not convert result to json",e);
56
- }
42
+ @SuppressWarnings({ "unchecked", "rawtypes" })
43
+ public static List mapViews(List result) {
44
+ List finalResult = new ArrayList(result.size());
45
+ for (Object o : result) {
46
+ finalResult.add(ViewMapper.mapView(o));
57
47
  }
48
+ return finalResult;
58
49
  }
59
50
 
60
- @SuppressWarnings({ "rawtypes" })
61
- public static List evaluateQuery(String query, List inputViews) {
62
- return evaluateQueryForPath(parseQuery(query), inputViews);
63
- }
64
51
 
65
52
  @SuppressWarnings({ "rawtypes", "unchecked" })
66
- public static List evaluateQueryWithOptions(String query, List inputViews,
67
- List options) {
68
-
69
- long before = System.currentTimeMillis();
70
- List views = evaluateQueryForPath(parseQuery(query), inputViews);
71
- long after = System.currentTimeMillis();
72
- String action = "EvaluateQueryNoOptions";
73
- System.out.println(action+ " took: "+ (after-before) + "ms");
74
-
75
-
76
-
53
+ public static List applyOperations(List views, List<Operation> operations) {
77
54
  List result = views;
78
- for (Object methodNameObj : options) {
79
- String propertyName = (String) methodNameObj;
80
- List nextResult = new ArrayList(views.size());
81
- for (Object o : result) {
55
+ for(Operation op : operations) {
56
+ List nextResult = new ArrayList(result.size());
57
+ for (Object obj : result) {
82
58
  try {
83
-
84
- before = System.currentTimeMillis();
85
-
86
- Method m = UIQueryUtils.hasProperty(o, propertyName);
87
- after = System.currentTimeMillis();
88
- action = "HasProperty";
89
- System.out.println(action+ " took: "+ (after-before) + "ms");
90
-
91
-
92
- if (m != null) {
93
- nextResult.add(m.invoke(o));
94
- }
95
- else
96
- {
97
- nextResult.add(UIQueryResultVoid.instance.asJSON(propertyName,o,"NO accessor for "+propertyName));
98
- }
99
-
59
+ nextResult.add(op.apply(obj));
100
60
  } catch (Exception e) {
101
- System.out.println(e.getMessage());
102
- nextResult.add(UIQueryResultVoid.instance.asJSON(propertyName,o));
103
- }
61
+ e.printStackTrace();
62
+ nextResult.add(UIQueryResultVoid.instance.asMap(op.getName(), obj, e.getMessage()));
63
+ }
104
64
  }
105
65
  result = nextResult;
106
66
  }
107
67
  return result;
108
-
109
68
  }
110
69
 
111
- @SuppressWarnings("unchecked")
112
- public static List<UIQueryAST> parseQuery(String query) {
113
- UIQueryLexer lexer = new UIQueryLexer(new ANTLRStringStream(query));
114
- UIQueryParser parser = new UIQueryParser(new CommonTokenStream(lexer));
115
-
116
- UIQueryParser.query_return q;
117
- try {
118
- q = parser.query();
119
- } catch (RecognitionException e) {
120
- // TODO Auto-generated catch block
121
- throw new InvalidUIQueryException(e.getMessage());
122
- }
123
- if (q == null) {
124
- throw new InvalidUIQueryException(query);
125
- }
126
- CommonTree rootNode = (CommonTree) q.getTree();
127
- List<CommonTree> queryPath = rootNode.getChildren();
128
-
129
- if (queryPath == null || queryPath.isEmpty()) {
130
- queryPath = Collections.singletonList(rootNode);
131
- }
132
-
133
- return mapUIQueryFromAstNodes(queryPath);
134
- }
135
70
 
136
71
  @SuppressWarnings("rawtypes")
137
72
  private static List evaluateQueryForPath(List<UIQueryAST> queryPath,
@@ -139,26 +74,23 @@ public class UIQueryEvaluator {
139
74
 
140
75
  List currentResult = inputViews;
141
76
  UIQueryDirection currentDirection = UIQueryDirection.DESCENDANT;
77
+ UIQueryVisibility currentVisibility = UIQueryVisibility.VISIBLE;
78
+
142
79
  for (UIQueryAST step : queryPath) {
143
80
  if (isDirection(step)) {
144
81
  currentDirection = directionFromAst(step);
145
- } else {
146
- System.out.println(step);
147
- long before = System.currentTimeMillis();
148
-
149
-
150
- currentResult = step.evaluateWithViewsAndDirection(
151
- currentResult, currentDirection);
152
- long after = System.currentTimeMillis();
153
- String action = "EvaluateQueryNoOptions" + step.toString();
154
- System.out.println(action+ " took: "+ (after-before) + "ms");
155
-
82
+ }
83
+ else if (step instanceof UIQueryVisibility) {
84
+ currentVisibility = (UIQueryVisibility) step;
85
+ }
86
+ else {
87
+ currentResult = step.evaluateWithViews(currentResult, currentDirection,currentVisibility);
156
88
  }
157
89
 
158
90
  }
159
91
  return currentResult;
160
92
  }
161
-
93
+
162
94
  public static UIQueryDirection directionFromAst(UIQueryAST step) {
163
95
  // TODO Auto-generated method stub
164
96
  return null;
@@ -168,38 +100,5 @@ public class UIQueryEvaluator {
168
100
  // TODO Auto-generated method stub
169
101
  return false;
170
102
  }
171
-
172
- public static List<UIQueryAST> mapUIQueryFromAstNodes(List<CommonTree> nodes) {
173
- List<UIQueryAST> mapped = new ArrayList<UIQueryAST>(nodes.size());
174
- for (CommonTree t : nodes) {
175
- mapped.add(uiQueryFromAst(t));
176
- }
177
- return mapped;
178
- }
179
-
180
- public static UIQueryAST uiQueryFromAst(CommonTree step) {
181
- String stepType = UIQueryParser.tokenNames[step.getType()];
182
- switch (step.getType()) {
183
- case UIQueryParser.QUALIFIED_NAME:
184
- try {
185
- return new UIQueryASTClassName(Class.forName(step.getText()));
186
- } catch (ClassNotFoundException e) {
187
- // TODO Auto-generated catch block
188
- throw new InvalidUIQueryException("Qualified class name: "
189
- + step.getText() + " not found. (" + e.getMessage()
190
- + ")");
191
- }
192
- case UIQueryParser.NAME:
193
- return new UIQueryASTClassName(step.getText());
194
-
195
- case UIQueryParser.FILTER_COLON:
196
- return UIQueryASTWith.fromAST(step);
197
- default:
198
- throw new InvalidUIQueryException("Unknown query: " + stepType
199
- + " with text: " + step.getText());
200
-
201
- }
202
-
203
- }
204
-
103
+
205
104
  }
@@ -1,12 +1,27 @@
1
1
  package sh.calaba.instrumentationbackend.query.ast;
2
2
 
3
+ import static sh.calaba.instrumentationbackend.InstrumentationBackend.viewFetcher;
4
+
3
5
  import java.lang.reflect.InvocationTargetException;
4
6
  import java.lang.reflect.Method;
5
7
  import java.util.ArrayList;
6
8
  import java.util.Collections;
9
+ import java.util.HashMap;
7
10
  import java.util.List;
11
+ import java.util.Map;
12
+ import java.util.concurrent.Callable;
13
+ import java.util.concurrent.Future;
14
+ import java.util.concurrent.TimeUnit;
15
+ import java.util.concurrent.atomic.AtomicReference;
8
16
 
17
+ import sh.calaba.instrumentationbackend.InstrumentationBackend;
18
+ import sh.calaba.instrumentationbackend.actions.webview.QueryHelper;
19
+ import sh.calaba.instrumentationbackend.query.CompletedFuture;
20
+ import sh.calaba.org.codehaus.jackson.map.ObjectMapper;
21
+ import sh.calaba.org.codehaus.jackson.type.TypeReference;
22
+ import android.content.res.Resources.NotFoundException;
9
23
  import android.view.View;
24
+ import android.webkit.WebView;
10
25
 
11
26
  public class UIQueryUtils {
12
27
  @SuppressWarnings({ "unchecked", "rawtypes" })
@@ -128,8 +143,88 @@ public class UIQueryUtils {
128
143
  }
129
144
 
130
145
  public static boolean isVisible(Object v) {
131
- if (!(v instanceof View)) { return true; }
132
- return ((View) v).isShown();
146
+ if (!(v instanceof View)) { return true; }
147
+ View view = (View) v;
148
+ return view.isShown() && viewFetcher.isViewSufficientlyShown(view);
133
149
  }
150
+
151
+ public static String getId(View view) {
152
+ try {
153
+ return InstrumentationBackend.solo.getCurrentActivity()
154
+ .getResources().getResourceEntryName(view.getId());
134
155
 
156
+ }
157
+ catch (NotFoundException e) {}
158
+ return null;
159
+ }
160
+
161
+ @SuppressWarnings("rawtypes")
162
+ public static Future evaluateAsyncInMainThread(final Callable callable) throws Exception {
163
+ final AtomicReference<Future> result = new AtomicReference<Future>();
164
+ final AtomicReference<Exception> errorResult = new AtomicReference<Exception>();
165
+
166
+ InstrumentationBackend.instrumentation.runOnMainSync(new Runnable() {
167
+ @SuppressWarnings("unchecked")
168
+ public void run() {
169
+ try {
170
+ Object res = callable.call();
171
+ if (res instanceof Future) {
172
+ result.set((Future) res);
173
+ }
174
+ else {
175
+ result.set(new CompletedFuture(res));
176
+ }
177
+ } catch (Exception e) {
178
+ errorResult.set(e);
179
+ }
180
+ }
181
+ });
182
+ if (result.get() == null) {
183
+ throw errorResult.get();
184
+ }
185
+ return result.get();
186
+ }
187
+
188
+ @SuppressWarnings("rawtypes")
189
+ public static Object evaluateSyncInMainThread(Callable callable) {
190
+ try {
191
+ return evaluateAsyncInMainThread(callable).get(10, TimeUnit.SECONDS);
192
+ } catch (RuntimeException e) {
193
+ throw e;
194
+ }
195
+ catch (Exception e) {
196
+ e.printStackTrace();
197
+ throw new RuntimeException(e);
198
+ }
199
+ }
200
+
201
+ @SuppressWarnings({ "unchecked", "rawtypes" })
202
+ public static List<Map<String, Object>> mapWebViewJsonResponse(final String jsonResponse, final WebView webView) {
203
+ return (List<Map<String, Object>>) evaluateSyncInMainThread(new Callable() {
204
+
205
+ @Override
206
+ public Object call() throws Exception {
207
+ List<Map<String, Object>> parsedResult;
208
+ try {
209
+ parsedResult = new ObjectMapper()
210
+ .readValue(
211
+ jsonResponse,
212
+ new TypeReference<List<HashMap<String, Object>>>() {
213
+ });
214
+ for (Map<String,Object> data : parsedResult) {
215
+ Map<String,Object> rect = (Map<String, Object>) data.get("rect");
216
+ Map <String,Object> updatedRect = QueryHelper.translateRectToScreenCoordinates(webView, rect);
217
+ data.put("rect", updatedRect);
218
+ data.put("webView", webView);
219
+ }
220
+ return parsedResult;
221
+ } catch (Exception e) {
222
+ e.printStackTrace();
223
+ throw new RuntimeException(e);
224
+ }
225
+ }
226
+ });
227
+
228
+ }
229
+
135
230
  }
@@ -0,0 +1,32 @@
1
+ package sh.calaba.instrumentationbackend.query.ast;
2
+
3
+ import java.util.ArrayList;
4
+ import java.util.List;
5
+
6
+ public enum UIQueryVisibility implements UIQueryAST {
7
+ ALL {
8
+ @Override
9
+ @SuppressWarnings("rawtypes")
10
+ public List evaluateWithViews(List inputViews,
11
+ UIQueryDirection direction, UIQueryVisibility self) {
12
+ return inputViews;
13
+ }
14
+ },
15
+
16
+
17
+ VISIBLE {
18
+ @Override
19
+ @SuppressWarnings({ "rawtypes", "unchecked" })
20
+ public List evaluateWithViews(List inputViews,
21
+ UIQueryDirection direction, UIQueryVisibility self) {
22
+ List filtered = new ArrayList(inputViews.size());
23
+ for (Object o : inputViews) {
24
+ if (UIQueryUtils.isVisible(o)) {
25
+ filtered.add(o);
26
+ }
27
+ }
28
+ return filtered;
29
+ }
30
+ };
31
+
32
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: calabash-android
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0.pre6
4
+ version: 0.4.0.pre7
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-27 00:00:00.000000000 Z
12
+ date: 2013-01-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cucumber
@@ -91,6 +91,22 @@ dependencies:
91
91
  - - ! '>='
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: awesome_print
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
94
110
  description: ! 'calabash-android drives tests for native and hybrid Android apps. '
95
111
  email:
96
112
  - jonas@lesspainful.com
@@ -266,6 +282,7 @@ files:
266
282
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/CalabashInstrumentationTestRunner.java
267
283
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/ClearAppData.java
268
284
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Command.java
285
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/FranklyResult.java
269
286
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/InstrumentationBackend.java
270
287
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Result.java
271
288
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/TestHelpers.java
@@ -363,26 +380,32 @@ files:
363
380
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ExecuteJavascript.java
364
381
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/GetLoadProgress.java
365
382
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/GetUrl.java
383
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/JavaScriptOperation.java
366
384
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/PressByCssSelector.java
367
- - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Query.java
368
385
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/QueryHelper.java
369
386
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ScrollTo.java
370
387
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetPropertyByCssSelector.java
371
388
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetText.java
372
- - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Touch.java
389
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/CompletedFuture.java
390
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/InvocationOperation.java
391
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Operation.java
392
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/PropertyOperation.java
373
393
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Query.java
374
394
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/QueryResult.java
375
395
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQuery.tokens
396
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQueryResultVoid.java
376
397
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ViewMapper.java
377
398
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryLexer.java
378
399
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryParser.java
379
400
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/InvalidUIQueryException.java
401
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/PartialFutureList.java
380
402
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryAST.java
381
403
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTClassName.java
382
404
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTWith.java
383
405
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryDirection.java
384
406
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryEvaluator.java
385
407
  - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryUtils.java
408
+ - test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryVisibility.java
386
409
  - test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variant.java
387
410
  - test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/Base64Variants.java
388
411
  - test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/FormatSchema.java
@@ -789,7 +812,6 @@ files:
789
812
  - test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/TokenBuffer.java
790
813
  - test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/VersionUtil.java
791
814
  - test-server/instrumentation-backend/src/sh/calaba/org/codehaus/jackson/util/package-info.java
792
- - test-server/instrumentation-backend/tests/sh/calaba/instrumentationbackend/query/tests/UIQueryTest.java
793
815
  - test-server/calabash-js/src/calabash.js
794
816
  - test-server/calabash-js/src/set_text.js
795
817
  - lib/calabash-android/lib/TestServer.apk