navigation_controller_android.cc revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
1// Copyright 2013 The Chromium Authors. 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#include "content/browser/frame_host/navigation_controller_android.h"
6
7#include "base/android/jni_android.h"
8#include "content/public/browser/navigation_controller.h"
9#include "jni/NavigationControllerImpl_jni.h"
10
11using base::android::AttachCurrentThread;
12
13namespace content {
14
15// static
16bool NavigationControllerAndroid::Register(JNIEnv* env) {
17  return RegisterNativesImpl(env);
18}
19
20NavigationControllerAndroid::NavigationControllerAndroid(
21    NavigationController* navigation_controller)
22    : navigation_controller_(navigation_controller) {
23  JNIEnv* env = AttachCurrentThread();
24  obj_.Reset(env,
25             Java_NavigationControllerImpl_create(
26                 env, reinterpret_cast<intptr_t>(this)).obj());
27}
28
29NavigationControllerAndroid::~NavigationControllerAndroid() {
30  Java_NavigationControllerImpl_destroy(AttachCurrentThread(), obj_.obj());
31}
32
33base::android::ScopedJavaLocalRef<jobject>
34NavigationControllerAndroid::GetJavaObject() {
35  return base::android::ScopedJavaLocalRef<jobject>(obj_);
36}
37
38jboolean NavigationControllerAndroid::CanGoBack(JNIEnv* env, jobject obj) {
39  return navigation_controller_->CanGoBack();
40}
41
42jboolean NavigationControllerAndroid::CanGoForward(JNIEnv* env,
43                                                   jobject obj) {
44  return navigation_controller_->CanGoForward();
45}
46
47jboolean NavigationControllerAndroid::CanGoToOffset(JNIEnv* env,
48                                                    jobject obj,
49                                                    jint offset) {
50  return navigation_controller_->CanGoToOffset(offset);
51}
52
53void NavigationControllerAndroid::GoBack(JNIEnv* env, jobject obj) {
54  navigation_controller_->GoBack();
55}
56
57void NavigationControllerAndroid::GoForward(JNIEnv* env, jobject obj) {
58  navigation_controller_->GoForward();
59}
60
61void NavigationControllerAndroid::GoToOffset(JNIEnv* env,
62                                             jobject obj,
63                                             jint offset) {
64  navigation_controller_->GoToOffset(offset);
65}
66
67void NavigationControllerAndroid::GoToNavigationIndex(JNIEnv* env,
68                                                      jobject obj,
69                                                      jint index) {
70  navigation_controller_->GoToIndex(index);
71}
72
73}  // namespace content
74