Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(418)

Side by Side Diff: content/shell/android/java/src/org/chromium/content_shell/Shell.java

Issue 172043002: Fix a crash of the Content Shell for Android when showing videos in a ContentVideoView. (Closed) Base URL: https://src.chromium.org/chrome/trunk/src/
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « AUTHORS ('k') | content/shell/android/java/src/org/chromium/content_shell/ShellManager.java » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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;
11 import android.view.KeyEvent; 11 import android.view.KeyEvent;
12 import android.view.View; 12 import android.view.View;
13 import android.view.inputmethod.EditorInfo; 13 import android.view.inputmethod.EditorInfo;
14 import android.view.inputmethod.InputMethodManager; 14 import android.view.inputmethod.InputMethodManager;
15 import android.widget.EditText; 15 import android.widget.EditText;
16 import android.widget.FrameLayout; 16 import android.widget.FrameLayout;
17 import android.widget.ImageButton; 17 import android.widget.ImageButton;
18 import android.widget.LinearLayout; 18 import android.widget.LinearLayout;
19 import android.widget.TextView; 19 import android.widget.TextView;
20 import android.widget.TextView.OnEditorActionListener; 20 import android.widget.TextView.OnEditorActionListener;
21 21
22 import org.chromium.base.CalledByNative; 22 import org.chromium.base.CalledByNative;
23 import org.chromium.base.JNINamespace; 23 import org.chromium.base.JNINamespace;
24 import org.chromium.content.browser.ContentView; 24 import org.chromium.content.browser.ContentView;
25 import org.chromium.content.browser.ContentViewClient;
25 import org.chromium.content.browser.ContentViewRenderView; 26 import org.chromium.content.browser.ContentViewRenderView;
26 import org.chromium.content.browser.LoadUrlParams; 27 import org.chromium.content.browser.LoadUrlParams;
27 import org.chromium.ui.base.WindowAndroid; 28 import org.chromium.ui.base.WindowAndroid;
28 29
29 /** 30 /**
30 * Container for the various UI components that make up a shell window. 31 * Container for the various UI components that make up a shell window.
31 */ 32 */
32 @JNINamespace("content") 33 @JNINamespace("content")
33 public class Shell extends LinearLayout { 34 public class Shell extends LinearLayout {
34 35
35 private static final long COMPLETED_PROGRESS_TIMEOUT_MS = 200; 36 private static final long COMPLETED_PROGRESS_TIMEOUT_MS = 200;
36 37
37 private final Runnable mClearProgressRunnable = new Runnable() { 38 private final Runnable mClearProgressRunnable = new Runnable() {
38 @Override 39 @Override
39 public void run() { 40 public void run() {
40 mProgressDrawable.setLevel(0); 41 mProgressDrawable.setLevel(0);
41 } 42 }
42 }; 43 };
43 44
44 // TODO(jrg): a mContentView.destroy() call is needed, both upstream and dow nstream. 45 // TODO(jrg): a mContentView.destroy() call is needed, both upstream and dow nstream.
45 private ContentView mContentView; 46 private ContentView mContentView;
47 private ContentViewClient mContentViewClient;
46 private EditText mUrlTextView; 48 private EditText mUrlTextView;
47 private ImageButton mPrevButton; 49 private ImageButton mPrevButton;
48 private ImageButton mNextButton; 50 private ImageButton mNextButton;
49 51
50 private ClipDrawable mProgressDrawable; 52 private ClipDrawable mProgressDrawable;
51 53
52 private long mNativeShell; 54 private long mNativeShell;
53 private ContentViewRenderView mContentViewRenderView; 55 private ContentViewRenderView mContentViewRenderView;
54 private WindowAndroid mWindow; 56 private WindowAndroid mWindow;
55 57
(...skipping 22 matching lines...) Expand all
78 FrameLayout.LayoutParams.MATCH_PARENT)); 80 FrameLayout.LayoutParams.MATCH_PARENT));
79 } 81 }
80 mContentViewRenderView = contentViewRenderView; 82 mContentViewRenderView = contentViewRenderView;
81 } 83 }
82 84
83 /** 85 /**
84 * Initializes the Shell for use. 86 * Initializes the Shell for use.
85 * 87 *
86 * @param nativeShell The pointer to the native Shell object. 88 * @param nativeShell The pointer to the native Shell object.
87 * @param window The owning window for this shell. 89 * @param window The owning window for this shell.
90 * @param client The {@link ContentViewClient} to be bound to any current or new
91 * {@link ContentViewCore}s associated with this shell.
88 */ 92 */
89 public void initialize(long nativeShell, WindowAndroid window) { 93 public void initialize(long nativeShell, WindowAndroid window, ContentViewCl ient client) {
90 mNativeShell = nativeShell; 94 mNativeShell = nativeShell;
91 mWindow = window; 95 mWindow = window;
96 mContentViewClient = client;
92 } 97 }
93 98
94 /** 99 /**
95 * Closes the shell and cleans up the native instance, which will handle des troying all 100 * Closes the shell and cleans up the native instance, which will handle des troying all
96 * dependencies. 101 * dependencies.
97 */ 102 */
98 public void close() { 103 public void close() {
99 if (mNativeShell == 0) return; 104 if (mNativeShell == 0) return;
100 nativeCloseShell(mNativeShell); 105 nativeCloseShell(mNativeShell);
101 } 106 }
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 } 244 }
240 245
241 /** 246 /**
242 * Initializes the ContentView based on the native tab contents pointer pass ed in. 247 * Initializes the ContentView based on the native tab contents pointer pass ed in.
243 * @param nativeTabContents The pointer to the native tab contents object. 248 * @param nativeTabContents The pointer to the native tab contents object.
244 */ 249 */
245 @SuppressWarnings("unused") 250 @SuppressWarnings("unused")
246 @CalledByNative 251 @CalledByNative
247 private void initFromNativeTabContents(long nativeTabContents) { 252 private void initFromNativeTabContents(long nativeTabContents) {
248 mContentView = ContentView.newInstance(getContext(), nativeTabContents, mWindow); 253 mContentView = ContentView.newInstance(getContext(), nativeTabContents, mWindow);
254 mContentView.setContentViewClient(mContentViewClient);
249 if (mContentView.getUrl() != null) mUrlTextView.setText(mContentView.get Url()); 255 if (mContentView.getUrl() != null) mUrlTextView.setText(mContentView.get Url());
250 ((FrameLayout) findViewById(R.id.contentview_holder)).addView(mContentVi ew, 256 ((FrameLayout) findViewById(R.id.contentview_holder)).addView(mContentVi ew,
251 new FrameLayout.LayoutParams( 257 new FrameLayout.LayoutParams(
252 FrameLayout.LayoutParams.MATCH_PARENT, 258 FrameLayout.LayoutParams.MATCH_PARENT,
253 FrameLayout.LayoutParams.MATCH_PARENT)); 259 FrameLayout.LayoutParams.MATCH_PARENT));
254 mContentView.requestFocus(); 260 mContentView.requestFocus();
255 mContentViewRenderView.setCurrentContentView(mContentView); 261 mContentViewRenderView.setCurrentContentView(mContentView);
256 } 262 }
257 263
258 /** 264 /**
259 * @return The {@link ContentView} currently shown by this Shell. 265 * @return The {@link ContentView} currently shown by this Shell.
260 */ 266 */
261 public ContentView getContentView() { 267 public ContentView getContentView() {
262 return mContentView; 268 return mContentView;
263 } 269 }
264 270
265 private void setKeyboardVisibilityForUrl(boolean visible) { 271 private void setKeyboardVisibilityForUrl(boolean visible) {
266 InputMethodManager imm = (InputMethodManager) getContext().getSystemServ ice( 272 InputMethodManager imm = (InputMethodManager) getContext().getSystemServ ice(
267 Context.INPUT_METHOD_SERVICE); 273 Context.INPUT_METHOD_SERVICE);
268 if (visible) { 274 if (visible) {
269 imm.showSoftInput(mUrlTextView, InputMethodManager.SHOW_IMPLICIT); 275 imm.showSoftInput(mUrlTextView, InputMethodManager.SHOW_IMPLICIT);
270 } else { 276 } else {
271 imm.hideSoftInputFromWindow(mUrlTextView.getWindowToken(), 0); 277 imm.hideSoftInputFromWindow(mUrlTextView.getWindowToken(), 0);
272 } 278 }
273 } 279 }
274 280
275 private static native void nativeCloseShell(long shellPtr); 281 private static native void nativeCloseShell(long shellPtr);
276 } 282 }
OLDNEW
« no previous file with comments | « AUTHORS ('k') | content/shell/android/java/src/org/chromium/content_shell/ShellManager.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698