1 // Copyright (c) 2014 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.core.sample;
7 import android.app.Activity;
8 import android.os.Bundle;
9 import android.view.KeyEvent;
10 import android.widget.LinearLayout;
11 import android.webkit.ValueCallback;
13 import java.util.LinkedList;
15 import org.xwalk.core.XWalkNavigationHistory;
16 import org.xwalk.core.XWalkUIClient;
17 import org.xwalk.core.XWalkView;
19 public class OnCreateWindowRequestedActivity extends XWalkBaseActivity {
20 private LinearLayout mParent;
21 private LinkedList<XWalkView> mXWalkViewHistory = new LinkedList<XWalkView>();
24 protected void onCreate(Bundle savedInstanceState) {
25 super.onCreate(savedInstanceState);
27 mParent = new LinearLayout(OnCreateWindowRequestedActivity.this);
28 setContentView(mParent);
30 mXWalkView = new XWalkView(OnCreateWindowRequestedActivity.this,
31 OnCreateWindowRequestedActivity.this);
32 setClient(mXWalkView);
34 mParent.addView(mXWalkView);
35 mXWalkViewHistory.add(mXWalkView);
37 mXWalkView.load("file:///android_asset/create_window_1.html", null);
40 private void setClient(XWalkView view) {
41 view.setUIClient(new XWalkUIClient(view) {
43 public boolean onCreateWindowRequested(XWalkView view, InitiateBy initiator,
44 ValueCallback<XWalkView> callback) {
45 XWalkView newView = new XWalkView(OnCreateWindowRequestedActivity.this,
46 OnCreateWindowRequestedActivity.this);
49 mParent.removeView(mXWalkViewHistory.getLast());
50 mParent.addView(newView);
51 mXWalkViewHistory.add(newView);
53 callback.onReceiveValue(newView);
60 public boolean onKeyDown(int keyCode, KeyEvent event) {
61 if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK) {
62 if (mXWalkViewHistory.getLast().getNavigationHistory().canGoBack()) {
63 mXWalkViewHistory.getLast().getNavigationHistory().navigate(
64 XWalkNavigationHistory.Direction.BACKWARD, 1);
66 } else if (mXWalkViewHistory.size() > 1) {
67 mParent.removeView(mXWalkViewHistory.removeLast());
68 mParent.addView(mXWalkViewHistory.getLast());
72 return super.onKeyDown(keyCode, event);