Home | History | Annotate | Download | only in webcontents
      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 package org.chromium.content.browser.webcontents;
      6 
      7 import org.chromium.base.CalledByNative;
      8 import org.chromium.base.JNINamespace;
      9 import org.chromium.content_public.browser.NavigationController;
     10 import org.chromium.content_public.browser.WebContents;
     11 
     12 /**
     13  * The WebContentsImpl Java wrapper to allow communicating with the native WebContentsImpl
     14  * object.
     15  */
     16 @JNINamespace("content")
     17 //TODO(tedchoc): Remove the package restriction once this class moves to a non-public content
     18 //               package whose visibility will be enforced via DEPS.
     19 /* package */ class WebContentsImpl implements WebContents {
     20 
     21     private long mNativeWebContentsAndroid;
     22     private NavigationController mNavigationController;
     23 
     24     private WebContentsImpl(
     25             long nativeWebContentsAndroid, NavigationController navigationController) {
     26         mNativeWebContentsAndroid = nativeWebContentsAndroid;
     27         mNavigationController = navigationController;
     28     }
     29 
     30     @CalledByNative
     31     private static WebContentsImpl create(
     32             long nativeWebContentsAndroid, NavigationController navigationController) {
     33         return new WebContentsImpl(nativeWebContentsAndroid, navigationController);
     34     }
     35 
     36     @CalledByNative
     37     private void destroy() {
     38         mNativeWebContentsAndroid = 0;
     39         mNavigationController = null;
     40     }
     41 
     42     @CalledByNative
     43     private long getNativePointer() {
     44         return mNativeWebContentsAndroid;
     45     }
     46 
     47     @Override
     48     public NavigationController getNavigationController() {
     49         return mNavigationController;
     50     }
     51 
     52     @Override
     53     public String getTitle() {
     54         return nativeGetTitle(mNativeWebContentsAndroid);
     55     }
     56 
     57     @Override
     58     public String getVisibleUrl() {
     59         return nativeGetVisibleURL(mNativeWebContentsAndroid);
     60     }
     61 
     62     @Override
     63     public void stop() {
     64         nativeStop(mNativeWebContentsAndroid);
     65     }
     66 
     67     private native String nativeGetTitle(long nativeWebContentsAndroid);
     68     private native String nativeGetVisibleURL(long nativeWebContentsAndroid);
     69     private native void nativeStop(long nativeWebContentsAndroid);
     70 }
     71