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.android_webview; | 5 package org.chromium.android_webview; |
6 | 6 |
7 import android.annotation.SuppressLint; | 7 import android.annotation.SuppressLint; |
8 import android.app.Activity; | 8 import android.app.Activity; |
9 import android.content.ComponentCallbacks2; | 9 import android.content.ComponentCallbacks2; |
10 import android.content.Context; | 10 import android.content.Context; |
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
465 // callback to the correct WebViewClient that is associated with the WebView . | 465 // callback to the correct WebViewClient that is associated with the WebView . |
466 // Otherwise, use this delegate only to post onPageStarted messages. | 466 // Otherwise, use this delegate only to post onPageStarted messages. |
467 // | 467 // |
468 // We are not using WebContentsObserver.didStartLoading because of stale URL s, out of order | 468 // We are not using WebContentsObserver.didStartLoading because of stale URL s, out of order |
469 // onPageStarted's and double onPageStarted's. | 469 // onPageStarted's and double onPageStarted's. |
470 // | 470 // |
471 private class InterceptNavigationDelegateImpl implements InterceptNavigation Delegate { | 471 private class InterceptNavigationDelegateImpl implements InterceptNavigation Delegate { |
472 @Override | 472 @Override |
473 public boolean shouldIgnoreNavigation(NavigationParams navigationParams) { | 473 public boolean shouldIgnoreNavigation(NavigationParams navigationParams) { |
474 final String url = navigationParams.url; | 474 final String url = navigationParams.url; |
475 | |
476 final int transitionType = navigationParams.pageTransitionType; | |
477 final boolean isLoadUrl = | |
478 (transitionType & PageTransition.FROM_API) != 0; | |
479 final boolean isBackForward = | |
480 (transitionType & PageTransition.FORWARD_BACK) != 0; | |
481 final boolean isReload = | |
482 (transitionType & PageTransition.CORE_MASK) == PageTransitio n.RELOAD; | |
483 final boolean isRedirect = navigationParams.isRedirect; | |
484 | |
475 boolean ignoreNavigation = false; | 485 boolean ignoreNavigation = false; |
476 if (mDeferredShouldOverrideUrlLoadingIsPendingForPopup) { | 486 // Any navigation from loadUrl, goBack/Forward, or reload, are consi dered application |
477 mDeferredShouldOverrideUrlLoadingIsPendingForPopup = false; | 487 // initiated and hence will not yield a shouldOverrideUrlLoading() c allback. |
488 if ((isLoadUrl && !isRedirect) || isBackForward) { | |
478 // If this is used for all navigations in future, cases for appl ication initiated | 489 // If this is used for all navigations in future, cases for appl ication initiated |
479 // load, redirect and backforward should also be filtered out. | 490 // load, redirect and backforward should also be filtered out. |
sgurun-gerrit only
2015/06/05 07:52:49
no-op if expression is true? you should be able to
gsennton
2015/06/08 14:07:23
Done.
| |
480 if (!navigationParams.isPost) { | 491 } else if (!navigationParams.isPost) { |
481 ignoreNavigation = mContentsClient.shouldOverrideUrlLoading( url); | 492 ignoreNavigation = mContentsClient.shouldOverrideUrlLoading(url) ; |
482 } | |
483 } | 493 } |
494 | |
484 // The shouldOverrideUrlLoading call might have resulted in posting messages to the | 495 // The shouldOverrideUrlLoading call might have resulted in posting messages to the |
485 // UI thread. Using sendMessage here (instead of calling onPageStart ed directly) | 496 // UI thread. Using sendMessage here (instead of calling onPageStart ed directly) |
486 // will allow those to run in order. | 497 // will allow those to run in order. |
487 if (!ignoreNavigation) { | 498 if (isRedirect) { |
499 mContentsClient.getCallbackHelper().postOnPageStarted(url); | |
500 // We can post onPageFinished here since we know that the naviga tion will fail. | |
501 // Also AwWebContentsObserver.didFail does not call OnPageFinish ed when the | |
502 // navigation is overridden because we don't want an onPageFinis hed for such a | |
503 // navigation unless it is a redirect. | |
504 if (ignoreNavigation) { | |
505 mContentsClient.getCallbackHelper().postOnPageFinished(url); | |
506 } | |
507 } else if (!ignoreNavigation) { | |
488 mContentsClient.getCallbackHelper().postOnPageStarted(url); | 508 mContentsClient.getCallbackHelper().postOnPageStarted(url); |
489 } | 509 } |
490 return ignoreNavigation; | 510 return ignoreNavigation; |
491 } | 511 } |
492 } | 512 } |
493 | 513 |
494 //-------------------------------------------------------------------------- ------------------ | 514 //-------------------------------------------------------------------------- ------------------ |
495 private class AwLayoutSizerDelegate implements AwLayoutSizer.Delegate { | 515 private class AwLayoutSizerDelegate implements AwLayoutSizer.Delegate { |
496 @Override | 516 @Override |
497 public void requestLayout() { | 517 public void requestLayout() { |
(...skipping 2569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3067 private native void nativeCreatePdfExporter(long nativeAwContents, AwPdfExpo rter awPdfExporter); | 3087 private native void nativeCreatePdfExporter(long nativeAwContents, AwPdfExpo rter awPdfExporter); |
3068 | 3088 |
3069 private native void nativePreauthorizePermission(long nativeAwContents, Stri ng origin, | 3089 private native void nativePreauthorizePermission(long nativeAwContents, Stri ng origin, |
3070 long resources); | 3090 long resources); |
3071 | 3091 |
3072 private native void nativePostMessageToFrame(long nativeAwContents, String f rameId, | 3092 private native void nativePostMessageToFrame(long nativeAwContents, String f rameId, |
3073 String message, String targetOrigin, int[] msgPorts); | 3093 String message, String targetOrigin, int[] msgPorts); |
3074 | 3094 |
3075 private native void nativeCreateMessageChannel(long nativeAwContents, AwMess agePort[] ports); | 3095 private native void nativeCreateMessageChannel(long nativeAwContents, AwMess agePort[] ports); |
3076 } | 3096 } |
OLD | NEW |