OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 org.chromium.android_webview.AwContents.VisualStateCallback; | 7 import org.chromium.android_webview.AwContents.VisualStateCallback; |
8 import org.chromium.base.ThreadUtils; | 8 import org.chromium.base.ThreadUtils; |
9 import org.chromium.content_public.browser.WebContents; | 9 import org.chromium.content_public.browser.WebContents; |
10 import org.chromium.content_public.browser.WebContentsObserver; | 10 import org.chromium.content_public.browser.WebContentsObserver; |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 } | 80 } |
81 | 81 |
82 @Override | 82 @Override |
83 public void titleWasSet(String title) { | 83 public void titleWasSet(String title) { |
84 AwContentsClient client = mAwContentsClient.get(); | 84 AwContentsClient client = mAwContentsClient.get(); |
85 if (client == null) return; | 85 if (client == null) return; |
86 client.updateTitle(title, true); | 86 client.updateTitle(title, true); |
87 } | 87 } |
88 | 88 |
89 @Override | 89 @Override |
90 public void didNavigateMainFrame(final String url, String baseUrl, | 90 public void didFinishNavigation(final String url, boolean isInMainFrame, boo
lean isErrorPage, |
91 boolean isNavigationToDifferentPage, boolean isFragmentNavigation, i
nt statusCode) { | 91 boolean hasCommitted, boolean isSamePage, boolean isReload) { |
| 92 mCommittedNavigation = true; |
| 93 AwContentsClient client = mAwContentsClient.get(); |
| 94 if (client != null) { |
| 95 client.getCallbackHelper().postDoUpdateVisitedHistory(url, isReload)
; |
| 96 } |
| 97 |
92 // Only invoke the onPageCommitVisible callback when navigating to a dif
ferent page, | 98 // Only invoke the onPageCommitVisible callback when navigating to a dif
ferent page, |
93 // but not when navigating to a different fragment within the same page. | 99 // but not when navigating to a different fragment within the same page. |
94 if (isNavigationToDifferentPage) { | 100 if (isInMainFrame && !isSamePage) { |
95 ThreadUtils.postOnUiThread(new Runnable() { | 101 ThreadUtils.postOnUiThread(new Runnable() { |
96 @Override | 102 @Override |
97 public void run() { | 103 public void run() { |
98 AwContents awContents = mAwContents.get(); | 104 AwContents awContents = mAwContents.get(); |
99 if (awContents != null) { | 105 if (awContents != null) { |
100 awContents.insertVisualStateCallbackIfNotDestroyed( | 106 awContents.insertVisualStateCallbackIfNotDestroyed( |
101 0, new VisualStateCallback() { | 107 0, new VisualStateCallback() { |
102 @Override | 108 @Override |
103 public void onComplete(long requestId) { | 109 public void onComplete(long requestId) { |
104 AwContentsClient client = mAwContentsCli
ent.get(); | 110 AwContentsClient client = mAwContentsCli
ent.get(); |
105 if (client == null) return; | 111 if (client == null) return; |
106 client.onPageCommitVisible(url); | 112 client.onPageCommitVisible(url); |
107 } | 113 } |
108 }); | 114 }); |
109 } | 115 } |
110 } | 116 } |
111 }); | 117 }); |
112 } | 118 } |
113 | 119 |
114 // This is here to emulate the Classic WebView firing onPageFinished for
main frame | 120 // This is here to emulate the Classic WebView firing onPageFinished for
main frame |
115 // navigations where only the hash fragment changes. | 121 // navigations where only the hash fragment changes. |
116 if (isFragmentNavigation) { | 122 if (isSamePage && client != null) { |
117 AwContentsClient client = mAwContentsClient.get(); | |
118 if (client == null) return; | |
119 client.getCallbackHelper().postOnPageFinished(url); | 123 client.getCallbackHelper().postOnPageFinished(url); |
120 } | 124 } |
121 } | 125 } |
122 | 126 |
123 @Override | |
124 public void didNavigateAnyFrame(String url, String baseUrl, boolean isReload
) { | |
125 mCommittedNavigation = true; | |
126 final AwContentsClient client = mAwContentsClient.get(); | |
127 if (client == null) return; | |
128 client.getCallbackHelper().postDoUpdateVisitedHistory(url, isReload); | |
129 } | |
130 | |
131 public boolean didEverCommitNavigation() { | 127 public boolean didEverCommitNavigation() { |
132 return mCommittedNavigation; | 128 return mCommittedNavigation; |
133 } | 129 } |
134 } | 130 } |
OLD | NEW |