WebContentsImpl.java revision 5f1c94371a64b3196d4be9466099bb892df9b88e
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 5package org.chromium.content.browser.webcontents; 6 7import org.chromium.base.CalledByNative; 8import org.chromium.base.JNINamespace; 9import org.chromium.content_public.browser.NavigationController; 10import 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 @Override 68 public void insertCSS(String css) { 69 if (mNativeWebContentsAndroid == 0) return; 70 nativeInsertCSS(mNativeWebContentsAndroid, css); 71 } 72 73 @Override 74 public void onHide() { 75 nativeOnHide(mNativeWebContentsAndroid); 76 } 77 78 @Override 79 public void onShow() { 80 nativeOnShow(mNativeWebContentsAndroid); 81 } 82 83 @Override 84 public int getBackgroundColor() { 85 return nativeGetBackgroundColor(mNativeWebContentsAndroid); 86 } 87 88 @Override 89 public void addStyleSheetByURL(String url) { 90 nativeAddStyleSheetByURL(mNativeWebContentsAndroid, url); 91 } 92 93 @Override 94 public void showInterstitialPage( 95 String url, long interstitialPageDelegateAndroid) { 96 nativeShowInterstitialPage(mNativeWebContentsAndroid, url, interstitialPageDelegateAndroid); 97 } 98 99 @Override 100 public boolean isShowingInterstitialPage() { 101 return nativeIsShowingInterstitialPage(mNativeWebContentsAndroid); 102 } 103 104 @Override 105 public boolean isReady() { 106 return nativeIsRenderWidgetHostViewReady(mNativeWebContentsAndroid); 107 } 108 109 @Override 110 public void exitFullscreen() { 111 nativeExitFullscreen(mNativeWebContentsAndroid); 112 } 113 114 @Override 115 public void updateTopControlsState(boolean enableHiding, boolean enableShowing, 116 boolean animate) { 117 nativeUpdateTopControlsState(mNativeWebContentsAndroid, enableHiding, 118 enableShowing, animate); 119 } 120 121 @Override 122 public void showImeIfNeeded() { 123 nativeShowImeIfNeeded(mNativeWebContentsAndroid); 124 } 125 126 @Override 127 public void scrollFocusedEditableNodeIntoView() { 128 // The native side keeps track of whether the zoom and scroll actually occurred. It is 129 // more efficient to do it this way and sometimes fire an unnecessary message rather 130 // than synchronize with the renderer and always have an additional message. 131 nativeScrollFocusedEditableNodeIntoView(mNativeWebContentsAndroid); 132 } 133 134 @Override 135 public void selectWordAroundCaret() { 136 nativeSelectWordAroundCaret(mNativeWebContentsAndroid); 137 } 138 139 private native String nativeGetTitle(long nativeWebContentsAndroid); 140 private native String nativeGetVisibleURL(long nativeWebContentsAndroid); 141 private native void nativeStop(long nativeWebContentsAndroid); 142 private native void nativeInsertCSS(long nativeWebContentsAndroid, String css); 143 private native void nativeOnHide(long nativeWebContentsAndroid); 144 private native void nativeOnShow(long nativeWebContentsAndroid); 145 private native int nativeGetBackgroundColor(long nativeWebContentsAndroid); 146 private native void nativeAddStyleSheetByURL(long nativeWebContentsAndroid, 147 String url); 148 private native void nativeShowInterstitialPage(long nativeWebContentsAndroid, 149 String url, long nativeInterstitialPageDelegateAndroid); 150 private native boolean nativeIsShowingInterstitialPage(long nativeWebContentsAndroid); 151 private native boolean nativeIsRenderWidgetHostViewReady(long nativeWebContentsAndroid); 152 private native void nativeExitFullscreen(long nativeWebContentsAndroid); 153 private native void nativeUpdateTopControlsState(long nativeWebContentsAndroid, 154 boolean enableHiding, boolean enableShowing, boolean animate); 155 private native void nativeShowImeIfNeeded(long nativeWebContentsAndroid); 156 private native void nativeScrollFocusedEditableNodeIntoView(long nativeWebContentsAndroid); 157 private native void nativeSelectWordAroundCaret(long nativeWebContentsAndroid); 158} 159