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.
5 package org.xwalk.runtime;
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;
14 import org.chromium.content.browser.LoadUrlParams;
15 import org.xwalk.core.XWalkView;
18 * The implementation class for runtime core. It calls the methods provided
19 * by runtime core and customizes the behaviors for runtime.
21 class XWalkCoreProviderImpl implements XWalkRuntimeViewProvider {
22 private Context mContext;
23 private Activity mActivity;
24 private XWalkView mXwalkView;
26 public XWalkCoreProviderImpl(Context context, Activity activity) {
29 init(context, activity);
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);
39 public void loadAppFromUrl(String url) {
40 mXwalkView.loadUrl(url);
44 public void loadAppFromManifest(String manifestUrl) {
45 XWalkManifestReader manifestReader = new XWalkManifestReader(mActivity);
46 String manifest = manifestReader.read(manifestUrl);
47 int position = manifestUrl.lastIndexOf("/");
49 throw new RuntimeException("The URL of manifest file is invalid.");
52 String path = manifestUrl.substring(0, position + 1);
53 mXwalkView.loadAppFromManifest(path, manifest);
57 public void onCreate() {
61 public void onResume() {
62 mXwalkView.onResume();
66 public void onPause() {
71 public void onDestroy() {
72 mXwalkView.onDestroy();
76 public void onActivityResult(int requestCode, int resultCode, Intent data) {
77 mXwalkView.onActivityResult(requestCode, resultCode, data);
81 public boolean onNewIntent(Intent intent) {
82 return mXwalkView.onNewIntent(intent);
86 public String enableRemoteDebugging(String frontEndUrl, String socketName) {
87 // TODO(yongsheng): Enable two parameters once they're supported in XWalkView.
88 return mXwalkView.enableRemoteDebugging();
92 public void disableRemoteDebugging() {
93 mXwalkView.disableRemoteDebugging();
97 public String getVersion() {
98 return mXwalkView.getVersion();
102 public View getView() {
106 // For instrumentation test.
108 public String getTitleForTest() {
109 return mXwalkView.getTitle();
113 public void setCallbackForTest(Object callback) {
114 XWalkClientForTest clientForTest = new XWalkClientForTest(mContext, mXwalkView);
115 clientForTest.setCallbackForTest(callback);
116 mXwalkView.setXWalkClient(clientForTest);
118 XWalkWebChromeClientForTest webChromeClient =
119 new XWalkWebChromeClientForTest(mContext, mXwalkView);
120 webChromeClient.setCallbackForTest(callback);
121 mXwalkView.setXWalkWebChromeClient(webChromeClient);
125 public void loadDataForTest(String data, String mimeType, boolean isBase64Encoded) {
126 mXwalkView.getXWalkViewContentForTest().getContentViewCoreForTest(
127 ).loadUrl(LoadUrlParams.createLoadDataParams(
128 data, mimeType, isBase64Encoded));
132 public boolean onKeyUp(int keyCode, KeyEvent event) {
133 return mXwalkView.onKeyUp(keyCode, event);