Project Ne10
An Open Optimized Software Library Project for the ARM Architecture
Loading...
Searching...
No Matches
NE10DemoViewController.m
1/*
2 * Copyright 2013-15 ARM Limited and Contributors.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of ARM Limited nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY ARM LIMITED AND CONTRIBUTORS "AS IS" AND
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL ARM LIMITED AND CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28#import "NE10DemoViewController.h"
29#import "test_funcs.h"
30
32
33- (void)runNe10TestThreadMain;
34@end
35
36@implementation NE10DemoViewController
37
38- (void)viewDidLoad
39{
40 [super viewDidLoad];
41
42 self->lock = [[NSLock alloc] init];
43 self->ne10Finished = TRUE;
44 self->ne10Result = NULL;
45
46 self.webView.delegate = self;
47 NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"html" inDirectory:nil];
48 NSURL *url = [NSURL fileURLWithPath:htmlFile];
49 NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
50
51 [self.webView loadRequest:requestObj];
52}
53
54- (void)didReceiveMemoryWarning
55{
56 [super didReceiveMemoryWarning];
57}
58
59// This function is called on all location change,
60// here we use this to communicate with javascript
61- (BOOL)webView:(UIWebView *)webView
62 shouldStartLoadWithRequest:(NSURLRequest *)request
63 navigationType:(UIWebViewNavigationType)navigationType {
64 NSURL *url = request.URL;
65 if ([[url scheme] isEqualToString:@"ne10"]) {
66 if (self->ne10Finished) {
67 //our ne10 test return "(null)" when all tests finished
68 if (self->ne10Result != NULL && ![self->ne10Result isEqual: @"\"(null)\""]) {
69 NSString *jsFunction = [NSString stringWithFormat:@"returnFromObjectivec(%@)", self->ne10Result];
70 [self.webView stringByEvaluatingJavaScriptFromString:jsFunction];
71 }
72 self->ne10Finished = FALSE;
73 NSThread* ne10TestThread = [[NSThread alloc] initWithTarget:self
74 selector:@selector(runNe10TestThreadMain)
75 object:nil];
76 [ne10TestThread start]; // Actually create the thread
77 }
78 return NO;
79 }
80 // Accept this location change, it makes no sense here
81 return YES;
82}
83
84- (void)runNe10TestThreadMain {
85 //call ne10 performance test function
86 self->ne10Result = [NSString stringWithFormat:@"%s", NE10RunTest()];
87 //escape quote in string
88 self->ne10Result = [self->ne10Result stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];
89 self->ne10Result = [NSString stringWithFormat:@"\"%@\"",self->ne10Result];
90 self->ne10Finished = TRUE;
91}
92
93@end