Commit da7116b7 authored by Yaron Friedman's avatar Yaron Friedman Committed by Chromium LUCI CQ

TabObserver.onUpdateUrl String->gurl

Continue propagation of https://chromium-review.googlesource.com/c/chromium/src/+/2572244
and switching WebContentsObserver to use GURL.

BUG=783819

Change-Id: Iaee059196c35dbeb9c955e387553826e7957d867
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2577830
Commit-Queue: Yaron Friedman <yfriedman@chromium.org>
Reviewed-by: default avatarMichael Thiessen <mthiesse@chromium.org>
Cr-Commit-Position: refs/heads/master@{#835265}
parent cd6d8619
......@@ -25,6 +25,7 @@ import org.chromium.base.task.AsyncTask;
import org.chromium.content_public.browser.InvalidateTypes;
import org.chromium.content_public.common.ContentUrlConstants;
import org.chromium.content_public.common.ResourceRequestBody;
import org.chromium.url.GURL;
/**
* Adapts the AwWebContentsDelegate interface to the AwContentsClient interface.
......@@ -153,7 +154,7 @@ class AwWebContentsDelegateAdapter extends AwWebContentsDelegate {
}
@Override
public void onUpdateUrl(String url) {
public void onUpdateUrl(GURL url) {
// TODO: implement
}
......
......@@ -25,6 +25,7 @@ import org.chromium.components.find_in_page.FindNotificationDetails;
import org.chromium.content_public.browser.InvalidateTypes;
import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.common.ResourceRequestBody;
import org.chromium.url.GURL;
/**
* Implementation class of {@link TabWebContentsDelegateAndroid}.
......@@ -137,7 +138,7 @@ final class TabWebContentsDelegateAndroidImpl extends TabWebContentsDelegateAndr
}
@Override
public void onUpdateUrl(String url) {
public void onUpdateUrl(GURL url) {
RewindableIterator<TabObserver> observers = mTab.getTabObservers();
while (observers.hasNext()) observers.next().onUpdateUrl(mTab, url);
mDelegate.onUpdateUrl(url);
......
......@@ -8,8 +8,8 @@ import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.usage.UsageStatsManager;
import android.content.Context;
import android.net.Uri;
import android.webkit.URLUtil;
import androidx.annotation.Nullable;
import org.chromium.base.Log;
import org.chromium.chrome.browser.tab.EmptyTabObserver;
......@@ -22,6 +22,8 @@ import org.chromium.chrome.browser.tab.TabObserver;
import org.chromium.chrome.browser.tab.TabSelectionType;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabModelObserver;
import org.chromium.components.embedder_support.util.UrlUtilities;
import org.chromium.url.GURL;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
......@@ -58,7 +60,7 @@ public class PageViewObserver {
@Override
public void onShown(Tab tab, @TabSelectionType int type) {
if (!tab.isLoading() && !tab.isBeingRestored()) {
updateUrl(tab.getUrlString());
updateUrl(tab.getUrl());
}
}
......@@ -68,7 +70,7 @@ public class PageViewObserver {
}
@Override
public void onUpdateUrl(Tab tab, String url) {
public void onUpdateUrl(Tab tab, GURL url) {
assert tab == mCurrentTab;
String newFqdn = getValidFqdnOrEmptyString(url);
// We don't call updateUrl() here to avoid reporting start events for domains
......@@ -82,7 +84,7 @@ public class PageViewObserver {
public void didFirstVisuallyNonEmptyPaint(Tab tab) {
assert tab == mCurrentTab;
updateUrl(tab.getUrlString());
updateUrl(tab.getUrl());
}
@Override
......@@ -143,10 +145,10 @@ public class PageViewObserver {
* 2. Reporting a stop event for mLastFqdn.
* 3. Reporting a start event for the fqdn of {@code newUrl}.
*/
private void updateUrl(String newUrl) {
private void updateUrl(@Nullable GURL newUrl) {
String newFqdn = getValidFqdnOrEmptyString(newUrl);
boolean isSameDomain = newFqdn.equals(mLastFqdn);
boolean isValidProtocol = URLUtil.isHttpUrl(newUrl) || URLUtil.isHttpsUrl(newUrl);
boolean isValidProtocol = newUrl != null && UrlUtilities.isHttpOrHttps(newUrl);
boolean isSuspended = mSuspensionTracker.isWebsiteSuspended(newFqdn);
boolean didSuspend = checkSuspendedTabState(isSuspended, newFqdn);
......@@ -205,7 +207,7 @@ public class PageViewObserver {
// If the newly active tab is hidden, we don't want to check its URL yet; we'll wait until
// the onShown event fires.
if (mCurrentTab != null && !tab.isHidden()) {
updateUrl(tab.getUrlString());
updateUrl(tab.getUrl());
}
}
......@@ -242,9 +244,8 @@ public class PageViewObserver {
});
}
private static String getValidFqdnOrEmptyString(String url) {
if (url == null) return "";
String host = Uri.parse(url).getHost();
return host == null ? "" : host;
private static String getValidFqdnOrEmptyString(GURL url) {
if (GURL.isEmptyOrInvalid(url)) return "";
return url.getHost();
}
}
......@@ -17,6 +17,7 @@ import org.chromium.chrome.browser.tab.TabHidingType;
import org.chromium.components.browser_ui.share.ShareParams;
import org.chromium.services.service_manager.InterfaceProvider;
import org.chromium.ui.widget.Toast;
import org.chromium.url.GURL;
/**
* Handles the Link To Text action in the Sharing Hub.
......@@ -108,7 +109,7 @@ public class LinkToTextCoordinator extends EmptyTabObserver {
// Discard results if tab content is changed by typing new URL in omnibox.
@Override
public void onUpdateUrl(Tab tab, String url) {
public void onUpdateUrl(Tab tab, GURL url) {
LinkToTextMetricsBridge.logGenerateErrorOmniboxNavigation();
cleanup();
}
......
......@@ -97,7 +97,7 @@ public class EmptyTabObserver implements TabObserver {
public void onLoadProgressChanged(Tab tab, float progress) {}
@Override
public void onUpdateUrl(Tab tab, String url) {}
public void onUpdateUrl(Tab tab, GURL url) {}
@Override
public void onDidFailLoad(Tab tab, boolean isMainFrame, int errorCode, String failingUrl) {}
......
......@@ -205,7 +205,7 @@ public interface TabObserver {
* @param tab The notifying {@link Tab}.
* @param url The new URL.
*/
void onUpdateUrl(Tab tab, String url);
void onUpdateUrl(Tab tab, GURL url);
// WebContentsObserver methods ---------------------------------------------------------
......
......@@ -169,6 +169,7 @@ static_library("web_contents_delegate") {
"//ui/base",
"//ui/gfx",
"//ui/gfx/geometry",
"//url:gurl_android",
]
}
......@@ -198,6 +199,7 @@ android_library("web_contents_delegate_java") {
"//third_party/android_deps:androidx_core_core_java",
"//third_party/blink/public/mojom:mojom_platform_java",
"//ui/android:ui_no_recycler_view_java",
"//url:gurl_java",
]
resources_package = "org.chromium.components.embedder_support.delegate"
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
......
......@@ -26,6 +26,7 @@
#include "ui/android/view_android.h"
#include "ui/base/window_open_disposition.h"
#include "ui/gfx/geometry/rect.h"
#include "url/android/gurl_android.h"
#include "url/gurl.h"
using base::android::AttachCurrentThread;
......@@ -267,9 +268,8 @@ void WebContentsDelegateAndroid::UpdateTargetURL(WebContents* source,
ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
if (obj.is_null())
return;
ScopedJavaLocalRef<jstring> java_url =
ConvertUTF8ToJavaString(env, source->GetURL().spec());
Java_WebContentsDelegateAndroid_onUpdateUrl(env, obj, java_url);
Java_WebContentsDelegateAndroid_onUpdateUrl(
env, obj, url::GURLAndroid::FromNativeGURL(env, source->GetURL()));
}
bool WebContentsDelegateAndroid::HandleKeyboardEvent(
......
......@@ -11,6 +11,7 @@ import org.chromium.base.annotations.JNINamespace;
import org.chromium.blink.mojom.DisplayMode;
import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.common.ResourceRequestBody;
import org.chromium.url.GURL;
/**
* Java peer of the native class of the same name.
......@@ -73,7 +74,7 @@ public class WebContentsDelegateAndroid {
}
@CalledByNative
public void onUpdateUrl(String url) {}
public void onUpdateUrl(GURL url) {}
@CalledByNative
public boolean takeFocus(boolean reverse) {
......
......@@ -25,6 +25,7 @@ public class JUnitTestGURLs {
// in the map.
public static final String EXAMPLE_URL = "https://www.example.com";
public static final String URL_1 = "https://www.one.com";
public static final String URL_1_WITH_PATH = "https://www.one.com/some_path.html";
public static final String URL_2 = "https://www.two.com";
public static final String SEARCH_URL = "https://www.google.com/search?q=test";
public static final String INITIAL_URL = "https://initial.com";
......@@ -41,6 +42,9 @@ public class JUnitTestGURLs {
map.put(URL_1,
"78,1,true,0,5,0,-1,0,-1,8,11,0,-1,19,1,0,-1,0,-1,"
+ "false,false,https://www.one.com/");
map.put(URL_1_WITH_PATH,
"93,1,true,0,5,0,-1,0,-1,8,11,0,-1,19,15,0,-1,0,-1,"
+ "false,false,https://www.one.com/some_path.html");
map.put(URL_2,
"78,1,true,0,5,0,-1,0,-1,8,11,0,-1,19,1,0,-1,0,-1,"
+ "false,false,https://www.two.com/");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment