提交 2795216f 编写于 作者: A Adam Barth

Wire up Android back button in SkyShell

The back button now triggers an event of type |back|.

R=eseidel@chromium.org, jackson@chromium.org

Review URL: https://codereview.chromium.org/1176373004.
上级 f8dbe972
......@@ -123,6 +123,8 @@ public:
GestureTypeLast = GesturePinchUpdate,
WheelEvent,
Back,
};
enum Modifiers {
......@@ -187,6 +189,10 @@ public:
return type == WheelEvent;
}
static WebInputEvent* create() {
return new WebInputEvent(sizeof(WebInputEvent));
}
protected:
explicit WebInputEvent(unsigned sizeParam)
{
......
......@@ -91,6 +91,8 @@ void SkyView::HandleInputEvent(const WebInputEvent& inputEvent) {
} else if (WebInputEvent::isWheelEventType(inputEvent.type)) {
const WebWheelEvent& event = static_cast<const WebWheelEvent&>(inputEvent);
data_->view_->handleInputEvent(WheelEvent::create(event));
} else if (inputEvent.type == WebInputEvent::Back) {
data_->view_->handleInputEvent(Event::create("back"));
}
}
......
......@@ -30,6 +30,11 @@ bool handleEvent(Event event) {
return true;
}
if (event.type == "back") {
print("Pressed back button.");
return true;
}
return false;
}
......
......@@ -19,6 +19,7 @@ enum EventType {
GESTURE_SHOW_PRESS,
GESTURE_TAP,
GESTURE_TAP_DOWN,
BACK,
};
enum PointerKind {
......
......@@ -176,6 +176,12 @@ public class PlatformViewAndroid extends SurfaceView
mViewportObserver.onInputEvent(event);
}
public void onBackPressed() {
InputEvent event = new InputEvent();
event.type = EventType.BACK;
mViewportObserver.onInputEvent(event);
}
public void loadUrl(String url) {
mViewportObserver.loadUrl(url);
}
......
......@@ -48,6 +48,17 @@ public class SkyActivity extends Activity {
super.onDestroy();
}
@Override
public void onBackPressed() {
if (mView != null) {
mView.onBackPressed();
// TODO(abarth): We should have some way to trigger the default
// back behavior.
return;
}
super.onBackPressed();
}
public void loadUrl(String url) {
mView.loadUrl(url);
}
......
......@@ -104,6 +104,12 @@ scoped_ptr<blink::WebInputEvent> BuildWebGestureEvent(
return web_event.Pass();
}
scoped_ptr<blink::WebInputEvent> BuildWebBackEvent(const InputEventPtr& event) {
scoped_ptr<blink::WebInputEvent> web_event(blink::WebInputEvent::create());
web_event->type = blink::WebInputEvent::Back;
return web_event.Pass();
}
} // namespace
scoped_ptr<blink::WebInputEvent> ConvertEvent(const InputEventPtr& event,
......@@ -124,6 +130,8 @@ scoped_ptr<blink::WebInputEvent> ConvertEvent(const InputEventPtr& event,
case EVENT_TYPE_GESTURE_TAP:
case EVENT_TYPE_GESTURE_TAP_DOWN:
return BuildWebGestureEvent(event, device_pixel_ratio);
case EVENT_TYPE_BACK:
return BuildWebBackEvent(event);
case EVENT_TYPE_UNKNOWN:
NOTIMPLEMENTED() << "ConvertEvent received unexpected EVENT_TYPE_UNKNOWN";
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册