| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.content_shell; | 5 package org.chromium.content_shell; |
| 6 | 6 |
| 7 import android.content.Context; | 7 import android.content.Context; |
| 8 import android.graphics.drawable.ClipDrawable; | 8 import android.graphics.drawable.ClipDrawable; |
| 9 import android.text.TextUtils; | 9 import android.text.TextUtils; |
| 10 import android.util.AttributeSet; | 10 import android.util.AttributeSet; |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 | 36 |
| 37 private static final long COMPLETED_PROGRESS_TIMEOUT_MS = 200; | 37 private static final long COMPLETED_PROGRESS_TIMEOUT_MS = 200; |
| 38 | 38 |
| 39 private final Runnable mClearProgressRunnable = new Runnable() { | 39 private final Runnable mClearProgressRunnable = new Runnable() { |
| 40 @Override | 40 @Override |
| 41 public void run() { | 41 public void run() { |
| 42 mProgressDrawable.setLevel(0); | 42 mProgressDrawable.setLevel(0); |
| 43 } | 43 } |
| 44 }; | 44 }; |
| 45 | 45 |
| 46 // TODO(jrg): a mContentView.destroy() call is needed, both upstream and dow
nstream. | |
| 47 private ContentView mContentView; | 46 private ContentView mContentView; |
| 47 private ContentViewCore mContentViewCore; |
| 48 private ContentViewClient mContentViewClient; | 48 private ContentViewClient mContentViewClient; |
| 49 private EditText mUrlTextView; | 49 private EditText mUrlTextView; |
| 50 private ImageButton mPrevButton; | 50 private ImageButton mPrevButton; |
| 51 private ImageButton mNextButton; | 51 private ImageButton mNextButton; |
| 52 | 52 |
| 53 private ClipDrawable mProgressDrawable; | 53 private ClipDrawable mProgressDrawable; |
| 54 | 54 |
| 55 private long mNativeShell; | 55 private long mNativeShell; |
| 56 private ContentViewRenderView mContentViewRenderView; | 56 private ContentViewRenderView mContentViewRenderView; |
| 57 private WindowAndroid mWindow; | 57 private WindowAndroid mWindow; |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 153 return true; | 153 return true; |
| 154 } | 154 } |
| 155 }); | 155 }); |
| 156 mUrlTextView.setOnFocusChangeListener(new OnFocusChangeListener() { | 156 mUrlTextView.setOnFocusChangeListener(new OnFocusChangeListener() { |
| 157 @Override | 157 @Override |
| 158 public void onFocusChange(View v, boolean hasFocus) { | 158 public void onFocusChange(View v, boolean hasFocus) { |
| 159 setKeyboardVisibilityForUrl(hasFocus); | 159 setKeyboardVisibilityForUrl(hasFocus); |
| 160 mNextButton.setVisibility(hasFocus ? GONE : VISIBLE); | 160 mNextButton.setVisibility(hasFocus ? GONE : VISIBLE); |
| 161 mPrevButton.setVisibility(hasFocus ? GONE : VISIBLE); | 161 mPrevButton.setVisibility(hasFocus ? GONE : VISIBLE); |
| 162 if (!hasFocus) { | 162 if (!hasFocus) { |
| 163 mUrlTextView.setText(mContentView.getUrl()); | 163 mUrlTextView.setText(mContentViewCore.getUrl()); |
| 164 } | 164 } |
| 165 } | 165 } |
| 166 }); | 166 }); |
| 167 } | 167 } |
| 168 | 168 |
| 169 /** | 169 /** |
| 170 * Loads an URL. This will perform minimal amounts of sanitizing of the URL
to attempt to | 170 * Loads an URL. This will perform minimal amounts of sanitizing of the URL
to attempt to |
| 171 * make it valid. | 171 * make it valid. |
| 172 * | 172 * |
| 173 * @param url The URL to be loaded by the shell. | 173 * @param url The URL to be loaded by the shell. |
| 174 */ | 174 */ |
| 175 public void loadUrl(String url) { | 175 public void loadUrl(String url) { |
| 176 if (url == null) return; | 176 if (url == null) return; |
| 177 | 177 |
| 178 if (TextUtils.equals(url, mContentView.getUrl())) { | 178 if (TextUtils.equals(url, mContentViewCore.getUrl())) { |
| 179 mContentView.getContentViewCore().reload(true); | 179 mContentViewCore.reload(true); |
| 180 } else { | 180 } else { |
| 181 mContentView.loadUrl(new LoadUrlParams(sanitizeUrl(url))); | 181 mContentViewCore.loadUrl(new LoadUrlParams(sanitizeUrl(url))); |
| 182 } | 182 } |
| 183 mUrlTextView.clearFocus(); | 183 mUrlTextView.clearFocus(); |
| 184 // TODO(aurimas): Remove this when crbug.com/174541 is fixed. | 184 // TODO(aurimas): Remove this when crbug.com/174541 is fixed. |
| 185 mContentView.clearFocus(); | 185 mContentView.clearFocus(); |
| 186 mContentView.requestFocus(); | 186 mContentView.requestFocus(); |
| 187 } | 187 } |
| 188 | 188 |
| 189 /** | 189 /** |
| 190 * Given an URL, this performs minimal sanitizing to ensure it will be valid
. | 190 * Given an URL, this performs minimal sanitizing to ensure it will be valid
. |
| 191 * @param url The url to be sanitized. | 191 * @param url The url to be sanitized. |
| 192 * @return The sanitized URL. | 192 * @return The sanitized URL. |
| 193 */ | 193 */ |
| 194 public static String sanitizeUrl(String url) { | 194 public static String sanitizeUrl(String url) { |
| 195 if (url == null) return url; | 195 if (url == null) return url; |
| 196 if (url.startsWith("www.") || url.indexOf(":") == -1) url = "http://" +
url; | 196 if (url.startsWith("www.") || url.indexOf(":") == -1) url = "http://" +
url; |
| 197 return url; | 197 return url; |
| 198 } | 198 } |
| 199 | 199 |
| 200 private void initializeNavigationButtons() { | 200 private void initializeNavigationButtons() { |
| 201 mPrevButton = (ImageButton) findViewById(R.id.prev); | 201 mPrevButton = (ImageButton) findViewById(R.id.prev); |
| 202 mPrevButton.setOnClickListener(new OnClickListener() { | 202 mPrevButton.setOnClickListener(new OnClickListener() { |
| 203 @Override | 203 @Override |
| 204 public void onClick(View v) { | 204 public void onClick(View v) { |
| 205 if (mContentView.canGoBack()) mContentView.goBack(); | 205 if (mContentViewCore.canGoBack()) mContentViewCore.goBack(); |
| 206 } | 206 } |
| 207 }); | 207 }); |
| 208 | 208 |
| 209 mNextButton = (ImageButton) findViewById(R.id.next); | 209 mNextButton = (ImageButton) findViewById(R.id.next); |
| 210 mNextButton.setOnClickListener(new OnClickListener() { | 210 mNextButton.setOnClickListener(new OnClickListener() { |
| 211 @Override | 211 @Override |
| 212 public void onClick(View v) { | 212 public void onClick(View v) { |
| 213 if (mContentView.canGoForward()) mContentView.goForward(); | 213 if (mContentViewCore.canGoForward()) mContentViewCore.goForward(
); |
| 214 } | 214 } |
| 215 }); | 215 }); |
| 216 } | 216 } |
| 217 | 217 |
| 218 @SuppressWarnings("unused") | 218 @SuppressWarnings("unused") |
| 219 @CalledByNative | 219 @CalledByNative |
| 220 private void onUpdateUrl(String url) { | 220 private void onUpdateUrl(String url) { |
| 221 mUrlTextView.setText(url); | 221 mUrlTextView.setText(url); |
| 222 } | 222 } |
| 223 | 223 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 245 } | 245 } |
| 246 | 246 |
| 247 /** | 247 /** |
| 248 * Initializes the ContentView based on the native tab contents pointer pass
ed in. | 248 * Initializes the ContentView based on the native tab contents pointer pass
ed in. |
| 249 * @param nativeTabContents The pointer to the native tab contents object. | 249 * @param nativeTabContents The pointer to the native tab contents object. |
| 250 */ | 250 */ |
| 251 @SuppressWarnings("unused") | 251 @SuppressWarnings("unused") |
| 252 @CalledByNative | 252 @CalledByNative |
| 253 private void initFromNativeTabContents(long nativeTabContents) { | 253 private void initFromNativeTabContents(long nativeTabContents) { |
| 254 mContentView = ContentView.newInstance(getContext(), nativeTabContents,
mWindow); | 254 mContentView = ContentView.newInstance(getContext(), nativeTabContents,
mWindow); |
| 255 mContentView.setContentViewClient(mContentViewClient); | 255 mContentViewCore = mContentView.getContentViewCore(); |
| 256 if (getParent() != null) mContentView.onShow(); | 256 mContentViewCore.setContentViewClient(mContentViewClient); |
| 257 if (mContentView.getUrl() != null) mUrlTextView.setText(mContentView.get
Url()); | 257 |
| 258 if (getParent() != null) mContentViewCore.onShow(); |
| 259 if (mContentViewCore.getUrl() != null) mUrlTextView.setText(mContentView
Core.getUrl()); |
| 258 ((FrameLayout) findViewById(R.id.contentview_holder)).addView(mContentVi
ew, | 260 ((FrameLayout) findViewById(R.id.contentview_holder)).addView(mContentVi
ew, |
| 259 new FrameLayout.LayoutParams( | 261 new FrameLayout.LayoutParams( |
| 260 FrameLayout.LayoutParams.MATCH_PARENT, | 262 FrameLayout.LayoutParams.MATCH_PARENT, |
| 261 FrameLayout.LayoutParams.MATCH_PARENT)); | 263 FrameLayout.LayoutParams.MATCH_PARENT)); |
| 262 mContentView.requestFocus(); | 264 mContentView.requestFocus(); |
| 263 mContentViewRenderView.setCurrentContentViewCore(mContentView.getContent
ViewCore()); | 265 mContentViewRenderView.setCurrentContentViewCore(mContentViewCore); |
| 264 } | 266 } |
| 265 | 267 |
| 266 /** | 268 /** |
| 267 * @return The {@link ContentView} currently shown by this Shell. | 269 * @return The {@link ContentView} currently shown by this Shell. |
| 268 */ | 270 */ |
| 269 public ContentView getContentView() { | 271 public ContentView getContentView() { |
| 270 return mContentView; | 272 return mContentView; |
| 271 } | 273 } |
| 272 | 274 |
| 275 /** |
| 276 * @return The {@link ContentViewCore} currently managing the view shown by
this Shell. |
| 277 */ |
| 278 public ContentViewCore getContentViewCore() { |
| 279 return mContentViewCore; |
| 280 } |
| 281 |
| 273 private void setKeyboardVisibilityForUrl(boolean visible) { | 282 private void setKeyboardVisibilityForUrl(boolean visible) { |
| 274 InputMethodManager imm = (InputMethodManager) getContext().getSystemServ
ice( | 283 InputMethodManager imm = (InputMethodManager) getContext().getSystemServ
ice( |
| 275 Context.INPUT_METHOD_SERVICE); | 284 Context.INPUT_METHOD_SERVICE); |
| 276 if (visible) { | 285 if (visible) { |
| 277 imm.showSoftInput(mUrlTextView, InputMethodManager.SHOW_IMPLICIT); | 286 imm.showSoftInput(mUrlTextView, InputMethodManager.SHOW_IMPLICIT); |
| 278 } else { | 287 } else { |
| 279 imm.hideSoftInputFromWindow(mUrlTextView.getWindowToken(), 0); | 288 imm.hideSoftInputFromWindow(mUrlTextView.getWindowToken(), 0); |
| 280 } | 289 } |
| 281 } | 290 } |
| 282 | 291 |
| 283 private static native void nativeCloseShell(long shellPtr); | 292 private static native void nativeCloseShell(long shellPtr); |
| 284 } | 293 } |
| OLD | NEW |