Upstream version 5.34.97.0
[platform/framework/web/crosswalk.git] / src / xwalk / runtime / android / runtime / src / org / xwalk / runtime / XWalkCoreProviderImpl.java
1 // Copyright (c) 2013 Intel Corporation. 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.xwalk.runtime;
6
7 import android.app.Activity;
8 import android.content.Context;
9 import android.content.Intent;
10 import android.view.KeyEvent;
11 import android.view.View;
12 import android.widget.FrameLayout;
13
14 import org.chromium.content.browser.LoadUrlParams;
15 import org.xwalk.core.XWalkView;
16
17 /**
18  * The implementation class for runtime core. It calls the methods provided
19  * by runtime core and customizes the behaviors for runtime.
20  */
21 class XWalkCoreProviderImpl implements XWalkRuntimeViewProvider {
22     private Context mContext;
23     private Activity mActivity;
24     private XWalkView mXwalkView;
25
26     public XWalkCoreProviderImpl(Context context, Activity activity) {
27         mContext = context;
28         mActivity = activity;
29         init(context, activity);
30     }
31
32     private void init(Context context, Activity activity) {
33         // TODO(yongsheng): do customizations for XWalkView. There will
34         // be many callback classes which are needed to be implemented.
35         mXwalkView = new XWalkView(context, activity);
36     }
37
38     @Override
39     public void loadAppFromUrl(String url) {
40         mXwalkView.loadUrl(url);
41     }
42
43     @Override
44     public void loadAppFromManifest(String manifestUrl) {
45         XWalkManifestReader manifestReader = new XWalkManifestReader(mActivity);
46         String manifest = manifestReader.read(manifestUrl);
47         int position = manifestUrl.lastIndexOf("/");
48         if (position == -1) {
49             throw new RuntimeException("The URL of manifest file is invalid.");
50         }
51
52         String path = manifestUrl.substring(0, position + 1);
53         mXwalkView.loadAppFromManifest(path, manifest);
54     }
55
56     @Override
57     public void onCreate() {
58     }
59
60     @Override
61     public void onResume() {
62         mXwalkView.onResume();
63     }
64
65     @Override
66     public void onPause() {
67         mXwalkView.onPause();
68     }
69
70     @Override
71     public void onDestroy() {
72         mXwalkView.onDestroy();
73     }
74
75     @Override
76     public void onActivityResult(int requestCode, int resultCode, Intent data) {
77         mXwalkView.onActivityResult(requestCode, resultCode, data);
78     }
79
80     @Override
81     public boolean onNewIntent(Intent intent) {
82         return mXwalkView.onNewIntent(intent);
83     }
84
85     @Override
86     public String enableRemoteDebugging(String frontEndUrl, String socketName) {
87         // TODO(yongsheng): Enable two parameters once they're supported in XWalkView.
88         return mXwalkView.enableRemoteDebugging();
89     }
90
91     @Override
92     public void disableRemoteDebugging() {
93         mXwalkView.disableRemoteDebugging();
94     }
95
96     @Override
97     public String getVersion() {
98         return mXwalkView.getVersion();
99     }
100
101     @Override
102     public View getView() {
103         return mXwalkView;
104     }
105
106     // For instrumentation test.
107     @Override
108     public String getTitleForTest() {
109         return mXwalkView.getTitle();
110     }
111
112     @Override
113     public void setCallbackForTest(Object callback) {
114         XWalkClientForTest clientForTest = new XWalkClientForTest(mContext, mXwalkView);
115         clientForTest.setCallbackForTest(callback);
116         mXwalkView.setXWalkClient(clientForTest);
117
118         XWalkWebChromeClientForTest webChromeClient =
119                 new XWalkWebChromeClientForTest(mContext, mXwalkView);
120         webChromeClient.setCallbackForTest(callback);
121         mXwalkView.setXWalkWebChromeClient(webChromeClient);
122     }
123
124     @Override
125     public void loadDataForTest(String data, String mimeType, boolean isBase64Encoded) {
126         mXwalkView.getXWalkViewContentForTest().getContentViewCoreForTest(
127                 ).loadUrl(LoadUrlParams.createLoadDataParams(
128                         data, mimeType, isBase64Encoded));
129     }
130
131     @Override
132     public boolean onKeyUp(int keyCode, KeyEvent event) {
133         return mXwalkView.onKeyUp(keyCode, event);
134     }
135 }