Index: content/browser/android/web_contents_observer_android.cc |
diff --git a/content/browser/android/web_contents_observer_android.cc b/content/browser/android/web_contents_observer_android.cc |
index 72b22417d1185a9a1cb1c4a81ede0904333410fb..2975a35c30f67dcac9c0d3584a566a2231072c2a 100644 |
--- a/content/browser/android/web_contents_observer_android.cc |
+++ b/content/browser/android/web_contents_observer_android.cc |
@@ -129,9 +129,16 @@ void WebContentsObserverAndroid::DidNavigateMainFrame( |
ConvertUTF8ToJavaString(env, params.url.spec())); |
ScopedJavaLocalRef<jstring> jstring_base_url( |
ConvertUTF8ToJavaString(env, params.base_url.spec())); |
+ |
// See http://crbug.com/251330 for why it's determined this way. |
- bool in_page_navigation = |
- details.type == NAVIGATION_TYPE_IN_PAGE || details.is_in_page; |
+ url::Replacements<char> replacements; |
+ replacements.ClearRef(); |
+ bool urls_same_ignoring_fragment = |
+ params.url.ReplaceComponents(replacements) == |
+ details.previous_url.ReplaceComponents(replacements); |
+ |
+ bool in_page_navigation = urls_same_ignoring_fragment && |
mkosiba (inactive)
2014/06/03 11:31:08
thanks! I guess we could just call this is_fragmen
|
+ (details.type == NAVIGATION_TYPE_IN_PAGE || details.is_in_page); |
Java_WebContentsObserverAndroid_didNavigateMainFrame( |
env, obj.obj(), jstring_url.obj(), jstring_base_url.obj(), |
details.is_navigation_to_different_page(), in_page_navigation); |