Commit 98a481dd authored by Jinsuk Kim's avatar Jinsuk Kim Committed by Commit Bot

Hide UserDataFactory interface from public

UserDataFactory in WebContents interface ended up not being used
by embedder but all within contents layer. This CL hides the interface
by moving it to WebContentsImpl.

Change-Id: I8ee92891c71cca6892a83757b0ed22c7d53a707d
Reviewed-on: https://chromium-review.googlesource.com/1159559Reviewed-by: default avatarBo <boliu@chromium.org>
Commit-Queue: Jinsuk Kim <jinsukkim@chromium.org>
Cr-Commit-Position: refs/heads/master@{#580404}
parent d43146b8
...@@ -13,10 +13,10 @@ import org.chromium.base.annotations.CalledByNative; ...@@ -13,10 +13,10 @@ import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.content.browser.input.ImeAdapterImpl; import org.chromium.content.browser.input.ImeAdapterImpl;
import org.chromium.content.browser.webcontents.WebContentsImpl; import org.chromium.content.browser.webcontents.WebContentsImpl;
import org.chromium.content.browser.webcontents.WebContentsImpl.UserDataFactory;
import org.chromium.content.browser.webcontents.WebContentsUserData; import org.chromium.content.browser.webcontents.WebContentsUserData;
import org.chromium.content_public.browser.ViewEventSink.InternalAccessDelegate; import org.chromium.content_public.browser.ViewEventSink.InternalAccessDelegate;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContents.UserDataFactory;
import org.chromium.device.gamepad.GamepadList; import org.chromium.device.gamepad.GamepadList;
import org.chromium.ui.base.EventForwarder; import org.chromium.ui.base.EventForwarder;
......
...@@ -7,8 +7,9 @@ package org.chromium.content.browser; ...@@ -7,8 +7,9 @@ package org.chromium.content.browser;
import android.content.Context; import android.content.Context;
import org.chromium.content.browser.webcontents.WebContentsImpl; import org.chromium.content.browser.webcontents.WebContentsImpl;
import org.chromium.content.browser.webcontents.WebContentsImpl.UserDataFactory;
import org.chromium.content.browser.webcontents.WebContentsUserData;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContents.UserDataFactory;
import org.chromium.device.gamepad.GamepadList; import org.chromium.device.gamepad.GamepadList;
/** /**
...@@ -23,7 +24,8 @@ class Gamepad implements WindowEventObserver { ...@@ -23,7 +24,8 @@ class Gamepad implements WindowEventObserver {
} }
public static Gamepad from(WebContents webContents) { public static Gamepad from(WebContents webContents) {
return webContents.getOrSetUserData(Gamepad.class, UserDataFactoryLazyHolder.INSTANCE); return WebContentsUserData.fromWebContents(
webContents, Gamepad.class, UserDataFactoryLazyHolder.INSTANCE);
} }
public Gamepad(WebContents webContents) { public Gamepad(WebContents webContents) {
......
...@@ -16,12 +16,12 @@ import org.chromium.blink_public.web.WebInputEventType; ...@@ -16,12 +16,12 @@ import org.chromium.blink_public.web.WebInputEventType;
import org.chromium.content.browser.input.ImeAdapterImpl; import org.chromium.content.browser.input.ImeAdapterImpl;
import org.chromium.content.browser.selection.SelectionPopupControllerImpl; import org.chromium.content.browser.selection.SelectionPopupControllerImpl;
import org.chromium.content.browser.webcontents.WebContentsImpl; import org.chromium.content.browser.webcontents.WebContentsImpl;
import org.chromium.content.browser.webcontents.WebContentsImpl.UserDataFactory;
import org.chromium.content.browser.webcontents.WebContentsUserData; import org.chromium.content.browser.webcontents.WebContentsUserData;
import org.chromium.content_public.browser.GestureListenerManager; import org.chromium.content_public.browser.GestureListenerManager;
import org.chromium.content_public.browser.GestureStateListener; import org.chromium.content_public.browser.GestureStateListener;
import org.chromium.content_public.browser.ViewEventSink.InternalAccessDelegate; import org.chromium.content_public.browser.ViewEventSink.InternalAccessDelegate;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContents.UserDataFactory;
import org.chromium.ui.base.GestureEventType; import org.chromium.ui.base.GestureEventType;
import org.chromium.ui.base.ViewAndroidDelegate; import org.chromium.ui.base.ViewAndroidDelegate;
......
...@@ -8,10 +8,10 @@ import android.util.Pair; ...@@ -8,10 +8,10 @@ import android.util.Pair;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.content.browser.webcontents.WebContentsImpl.UserDataFactory;
import org.chromium.content.browser.webcontents.WebContentsUserData; import org.chromium.content.browser.webcontents.WebContentsUserData;
import org.chromium.content_public.browser.JavascriptInjector; import org.chromium.content_public.browser.JavascriptInjector;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContents.UserDataFactory;
import java.lang.annotation.Annotation; import java.lang.annotation.Annotation;
import java.util.HashMap; import java.util.HashMap;
......
...@@ -8,10 +8,10 @@ import android.view.InputDevice; ...@@ -8,10 +8,10 @@ import android.view.InputDevice;
import android.view.MotionEvent; import android.view.MotionEvent;
import org.chromium.content.browser.input.ImeAdapterImpl; import org.chromium.content.browser.input.ImeAdapterImpl;
import org.chromium.content.browser.webcontents.WebContentsImpl.UserDataFactory;
import org.chromium.content.browser.webcontents.WebContentsUserData; import org.chromium.content.browser.webcontents.WebContentsUserData;
import org.chromium.content_public.browser.ImeEventObserver; import org.chromium.content_public.browser.ImeEventObserver;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContents.UserDataFactory;
import org.chromium.ui.base.EventForwarder; import org.chromium.ui.base.EventForwarder;
/** /**
......
...@@ -5,9 +5,9 @@ ...@@ -5,9 +5,9 @@
package org.chromium.content.browser; package org.chromium.content.browser;
import org.chromium.content.browser.selection.SelectionPopupControllerImpl; import org.chromium.content.browser.selection.SelectionPopupControllerImpl;
import org.chromium.content.browser.webcontents.WebContentsImpl.UserDataFactory;
import org.chromium.content.browser.webcontents.WebContentsUserData; import org.chromium.content.browser.webcontents.WebContentsUserData;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContents.UserDataFactory;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
......
...@@ -16,9 +16,9 @@ import org.chromium.content.browser.PopupZoomer.OnTapListener; ...@@ -16,9 +16,9 @@ import org.chromium.content.browser.PopupZoomer.OnTapListener;
import org.chromium.content.browser.PopupZoomer.OnVisibilityChangedListener; import org.chromium.content.browser.PopupZoomer.OnVisibilityChangedListener;
import org.chromium.content.browser.input.ImeAdapterImpl; import org.chromium.content.browser.input.ImeAdapterImpl;
import org.chromium.content.browser.webcontents.WebContentsImpl; import org.chromium.content.browser.webcontents.WebContentsImpl;
import org.chromium.content.browser.webcontents.WebContentsImpl.UserDataFactory;
import org.chromium.content_public.browser.ImeEventObserver; import org.chromium.content_public.browser.ImeEventObserver;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContents.UserDataFactory;
/** /**
* Class that handles tap disambiguation feature. When a tap lands ambiguously * Class that handles tap disambiguation feature. When a tap lands ambiguously
......
...@@ -8,9 +8,10 @@ import android.content.res.Configuration; ...@@ -8,9 +8,10 @@ import android.content.res.Configuration;
import org.chromium.base.TraceEvent; import org.chromium.base.TraceEvent;
import org.chromium.content.browser.webcontents.WebContentsImpl; import org.chromium.content.browser.webcontents.WebContentsImpl;
import org.chromium.content.browser.webcontents.WebContentsImpl.UserDataFactory;
import org.chromium.content.browser.webcontents.WebContentsUserData;
import org.chromium.content_public.browser.ViewEventSink; import org.chromium.content_public.browser.ViewEventSink;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContents.UserDataFactory;
import org.chromium.ui.base.ViewAndroidDelegate; import org.chromium.ui.base.ViewAndroidDelegate;
import org.chromium.ui.base.WindowAndroid.ActivityStateObserver; import org.chromium.ui.base.WindowAndroid.ActivityStateObserver;
...@@ -39,8 +40,8 @@ public final class ViewEventSinkImpl implements ViewEventSink, ActivityStateObse ...@@ -39,8 +40,8 @@ public final class ViewEventSinkImpl implements ViewEventSink, ActivityStateObse
} }
public static ViewEventSinkImpl from(WebContents webContents) { public static ViewEventSinkImpl from(WebContents webContents) {
return webContents.getOrSetUserData( return WebContentsUserData.fromWebContents(
ViewEventSinkImpl.class, UserDataFactoryLazyHolder.INSTANCE); webContents, ViewEventSinkImpl.class, UserDataFactoryLazyHolder.INSTANCE);
} }
public ViewEventSinkImpl(WebContents webContents) { public ViewEventSinkImpl(WebContents webContents) {
......
...@@ -9,8 +9,9 @@ import android.content.res.Configuration; ...@@ -9,8 +9,9 @@ import android.content.res.Configuration;
import org.chromium.base.ActivityState; import org.chromium.base.ActivityState;
import org.chromium.base.ObserverList; import org.chromium.base.ObserverList;
import org.chromium.content.browser.webcontents.WebContentsImpl; import org.chromium.content.browser.webcontents.WebContentsImpl;
import org.chromium.content.browser.webcontents.WebContentsImpl.UserDataFactory;
import org.chromium.content.browser.webcontents.WebContentsUserData;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContents.UserDataFactory;
import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.display.DisplayAndroid; import org.chromium.ui.display.DisplayAndroid;
import org.chromium.ui.display.DisplayAndroid.DisplayAndroidObserver; import org.chromium.ui.display.DisplayAndroid.DisplayAndroidObserver;
...@@ -35,8 +36,8 @@ public final class WindowEventObserverManager implements DisplayAndroidObserver ...@@ -35,8 +36,8 @@ public final class WindowEventObserverManager implements DisplayAndroidObserver
} }
public static WindowEventObserverManager from(WebContents webContents) { public static WindowEventObserverManager from(WebContents webContents) {
return webContents.getOrSetUserData( return WebContentsUserData.fromWebContents(
WindowEventObserverManager.class, UserDataFactoryLazyHolder.INSTANCE); webContents, WindowEventObserverManager.class, UserDataFactoryLazyHolder.INSTANCE);
} }
private WindowEventObserverManager(WebContents webContents) { private WindowEventObserverManager(WebContents webContents) {
......
...@@ -35,10 +35,11 @@ import org.chromium.content.browser.WindowEventObserver; ...@@ -35,10 +35,11 @@ import org.chromium.content.browser.WindowEventObserver;
import org.chromium.content.browser.WindowEventObserverManager; import org.chromium.content.browser.WindowEventObserverManager;
import org.chromium.content.browser.accessibility.captioning.CaptioningController; import org.chromium.content.browser.accessibility.captioning.CaptioningController;
import org.chromium.content.browser.webcontents.WebContentsImpl; import org.chromium.content.browser.webcontents.WebContentsImpl;
import org.chromium.content.browser.webcontents.WebContentsImpl.UserDataFactory;
import org.chromium.content.browser.webcontents.WebContentsUserData;
import org.chromium.content_public.browser.AccessibilitySnapshotCallback; import org.chromium.content_public.browser.AccessibilitySnapshotCallback;
import org.chromium.content_public.browser.AccessibilitySnapshotNode; import org.chromium.content_public.browser.AccessibilitySnapshotNode;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContents.UserDataFactory;
import org.chromium.content_public.browser.WebContentsAccessibility; import org.chromium.content_public.browser.WebContentsAccessibility;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -139,8 +140,8 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProvider ...@@ -139,8 +140,8 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProvider
} }
public static WebContentsAccessibilityImpl fromWebContents(WebContents webContents) { public static WebContentsAccessibilityImpl fromWebContents(WebContents webContents) {
return webContents.getOrSetUserData( return WebContentsUserData.fromWebContents(webContents, WebContentsAccessibilityImpl.class,
WebContentsAccessibilityImpl.class, UserDataFactoryLazyHolder.INSTANCE); UserDataFactoryLazyHolder.INSTANCE);
} }
protected WebContentsAccessibilityImpl(WebContents webContents) { protected WebContentsAccessibilityImpl(WebContents webContents) {
......
...@@ -42,11 +42,12 @@ import org.chromium.content.browser.WindowEventObserver; ...@@ -42,11 +42,12 @@ import org.chromium.content.browser.WindowEventObserver;
import org.chromium.content.browser.WindowEventObserverManager; import org.chromium.content.browser.WindowEventObserverManager;
import org.chromium.content.browser.picker.InputDialogContainer; import org.chromium.content.browser.picker.InputDialogContainer;
import org.chromium.content.browser.webcontents.WebContentsImpl; import org.chromium.content.browser.webcontents.WebContentsImpl;
import org.chromium.content.browser.webcontents.WebContentsImpl.UserDataFactory;
import org.chromium.content.browser.webcontents.WebContentsUserData;
import org.chromium.content_public.browser.ImeAdapter; import org.chromium.content_public.browser.ImeAdapter;
import org.chromium.content_public.browser.ImeEventObserver; import org.chromium.content_public.browser.ImeEventObserver;
import org.chromium.content_public.browser.InputMethodManagerWrapper; import org.chromium.content_public.browser.InputMethodManagerWrapper;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContents.UserDataFactory;
import org.chromium.ui.base.ViewAndroidDelegate; import org.chromium.ui.base.ViewAndroidDelegate;
import org.chromium.ui.base.ViewUtils; import org.chromium.ui.base.ViewUtils;
import org.chromium.ui.base.ime.TextInputType; import org.chromium.ui.base.ime.TextInputType;
...@@ -172,8 +173,8 @@ public class ImeAdapterImpl implements ImeAdapter, WindowEventObserver { ...@@ -172,8 +173,8 @@ public class ImeAdapterImpl implements ImeAdapter, WindowEventObserver {
* @return {@link ImeAdapter} object. * @return {@link ImeAdapter} object.
*/ */
public static ImeAdapterImpl fromWebContents(WebContents webContents) { public static ImeAdapterImpl fromWebContents(WebContents webContents) {
return webContents.getOrSetUserData( return WebContentsUserData.fromWebContents(
ImeAdapterImpl.class, UserDataFactoryLazyHolder.INSTANCE); webContents, ImeAdapterImpl.class, UserDataFactoryLazyHolder.INSTANCE);
} }
/** /**
......
...@@ -17,8 +17,9 @@ import org.chromium.content.browser.WindowEventObserver; ...@@ -17,8 +17,9 @@ import org.chromium.content.browser.WindowEventObserver;
import org.chromium.content.browser.WindowEventObserverManager; import org.chromium.content.browser.WindowEventObserverManager;
import org.chromium.content.browser.accessibility.WebContentsAccessibilityImpl; import org.chromium.content.browser.accessibility.WebContentsAccessibilityImpl;
import org.chromium.content.browser.webcontents.WebContentsImpl; import org.chromium.content.browser.webcontents.WebContentsImpl;
import org.chromium.content.browser.webcontents.WebContentsImpl.UserDataFactory;
import org.chromium.content.browser.webcontents.WebContentsUserData;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContents.UserDataFactory;
import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.base.ViewAndroidDelegate; import org.chromium.ui.base.ViewAndroidDelegate;
import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.base.WindowAndroid;
...@@ -61,7 +62,8 @@ public class SelectPopup ...@@ -61,7 +62,8 @@ public class SelectPopup
* @return {@link SelectPopup} object. * @return {@link SelectPopup} object.
*/ */
public static SelectPopup fromWebContents(WebContents webContents) { public static SelectPopup fromWebContents(WebContents webContents) {
return webContents.getOrSetUserData(SelectPopup.class, UserDataFactoryLazyHolder.INSTANCE); return WebContentsUserData.fromWebContents(
webContents, SelectPopup.class, UserDataFactoryLazyHolder.INSTANCE);
} }
@CalledByNative @CalledByNative
......
...@@ -14,8 +14,9 @@ import org.chromium.content.browser.PopupController.HideablePopup; ...@@ -14,8 +14,9 @@ import org.chromium.content.browser.PopupController.HideablePopup;
import org.chromium.content.browser.WindowEventObserver; import org.chromium.content.browser.WindowEventObserver;
import org.chromium.content.browser.WindowEventObserverManager; import org.chromium.content.browser.WindowEventObserverManager;
import org.chromium.content.browser.webcontents.WebContentsImpl; import org.chromium.content.browser.webcontents.WebContentsImpl;
import org.chromium.content.browser.webcontents.WebContentsImpl.UserDataFactory;
import org.chromium.content.browser.webcontents.WebContentsUserData;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContents.UserDataFactory;
import org.chromium.ui.base.ViewAndroidDelegate; import org.chromium.ui.base.ViewAndroidDelegate;
import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.base.WindowAndroid;
...@@ -48,8 +49,8 @@ public class TextSuggestionHost implements WindowEventObserver, HideablePopup { ...@@ -48,8 +49,8 @@ public class TextSuggestionHost implements WindowEventObserver, HideablePopup {
* @return {@link TextSuggestionHost} object. * @return {@link TextSuggestionHost} object.
*/ */
public static TextSuggestionHost fromWebContents(WebContents webContents) { public static TextSuggestionHost fromWebContents(WebContents webContents) {
return webContents.getOrSetUserData( return WebContentsUserData.fromWebContents(
TextSuggestionHost.class, UserDataFactoryLazyHolder.INSTANCE); webContents, TextSuggestionHost.class, UserDataFactoryLazyHolder.INSTANCE);
} }
/** /**
......
...@@ -50,13 +50,13 @@ import org.chromium.content.browser.WindowEventObserver; ...@@ -50,13 +50,13 @@ import org.chromium.content.browser.WindowEventObserver;
import org.chromium.content.browser.WindowEventObserverManager; import org.chromium.content.browser.WindowEventObserverManager;
import org.chromium.content.browser.input.ImeAdapterImpl; import org.chromium.content.browser.input.ImeAdapterImpl;
import org.chromium.content.browser.webcontents.WebContentsImpl; import org.chromium.content.browser.webcontents.WebContentsImpl;
import org.chromium.content.browser.webcontents.WebContentsImpl.UserDataFactory;
import org.chromium.content.browser.webcontents.WebContentsUserData; import org.chromium.content.browser.webcontents.WebContentsUserData;
import org.chromium.content_public.browser.ActionModeCallbackHelper; import org.chromium.content_public.browser.ActionModeCallbackHelper;
import org.chromium.content_public.browser.ImeEventObserver; import org.chromium.content_public.browser.ImeEventObserver;
import org.chromium.content_public.browser.SelectionClient; import org.chromium.content_public.browser.SelectionClient;
import org.chromium.content_public.browser.SelectionPopupController; import org.chromium.content_public.browser.SelectionPopupController;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContents.UserDataFactory;
import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.base.MenuSourceType; import org.chromium.ui.base.MenuSourceType;
import org.chromium.ui.base.ViewAndroidDelegate; import org.chromium.ui.base.ViewAndroidDelegate;
......
...@@ -44,7 +44,6 @@ import org.chromium.content_public.browser.NavigationController; ...@@ -44,7 +44,6 @@ import org.chromium.content_public.browser.NavigationController;
import org.chromium.content_public.browser.RenderFrameHost; import org.chromium.content_public.browser.RenderFrameHost;
import org.chromium.content_public.browser.ViewEventSink.InternalAccessDelegate; import org.chromium.content_public.browser.ViewEventSink.InternalAccessDelegate;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContents.UserDataFactory;
import org.chromium.content_public.browser.WebContentsInternals; import org.chromium.content_public.browser.WebContentsInternals;
import org.chromium.content_public.browser.WebContentsObserver; import org.chromium.content_public.browser.WebContentsObserver;
import org.chromium.ui.OverscrollRefreshHandler; import org.chromium.ui.OverscrollRefreshHandler;
...@@ -112,6 +111,30 @@ public class WebContentsImpl implements WebContents, RenderFrameHostDelegate, Wi ...@@ -112,6 +111,30 @@ public class WebContentsImpl implements WebContents, RenderFrameHostDelegate, Wi
} }
}; };
/**
* Factory interface passed to {@link #getOrSetUserData()} for instantiation of
* class as user data.
*
* Constructor method reference comes handy for class Foo to provide the factory.
* Use lazy initialization to avoid having to generate too many anonymous references.
*
* <code>
* public class Foo {
* static final class FoofactoryLazyHolder {
* private static final UserDataFactory<Foo> INSTANCE = Foo::new;
* }
* ....
*
* webContents.getOrsetUserData(Foo.class, FooFactoryLazyHolder.INSTANCE);
*
* ....
* }
* </code>
*
* @param <T> Class to instantiate.
*/
public interface UserDataFactory<T> { T create(WebContents webContents); }
// Note this list may be incomplete. Frames that never had to initialize java side would // Note this list may be incomplete. Frames that never had to initialize java side would
// not have an entry here. This is here mainly to keep the java RenderFrameHosts alive, since // not have an entry here. This is here mainly to keep the java RenderFrameHosts alive, since
// native side generally cannot safely hold strong references to them. // native side generally cannot safely hold strong references to them.
...@@ -785,7 +808,15 @@ public class WebContentsImpl implements WebContents, RenderFrameHostDelegate, Wi ...@@ -785,7 +808,15 @@ public class WebContentsImpl implements WebContents, RenderFrameHostDelegate, Wi
return mRenderCoordinates; return mRenderCoordinates;
} }
@Override /**
* Retrieves or stores a user data object for this WebContents.
* @param key Class instance of the object used as the key.
* @param userDataFactory Factory that creates an object of the generic class. A new object
* is created if it hasn't been created and non-null factory is given.
* @return The created or retrieved user data object. Can be null if the object was
* not created yet, or {@code userDataFactory} is null, or the internal data
* storage is already garbage-collected.
*/
public <T> T getOrSetUserData(Class<T> key, UserDataFactory<T> userDataFactory) { public <T> T getOrSetUserData(Class<T> key, UserDataFactory<T> userDataFactory) {
// For tests that go without calling |initialize|. // For tests that go without calling |initialize|.
if (!mInitialized) return null; if (!mInitialized) return null;
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
package org.chromium.content.browser.webcontents; package org.chromium.content.browser.webcontents;
import org.chromium.content.browser.webcontents.WebContentsImpl.UserDataFactory;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContents.UserDataFactory;
/** /**
* Holds an object to be stored in {@code userDataMap} in {@link WebContents} for those * Holds an object to be stored in {@code userDataMap} in {@link WebContents} for those
......
...@@ -79,30 +79,6 @@ public interface WebContents extends Parcelable { ...@@ -79,30 +79,6 @@ public interface WebContents extends Parcelable {
}; };
} }
/**
* Factory interface passed to {@link #setUserData()} for instantiation of
* class as user data.
*
* Constructor method reference comes handy for class Foo to provide the factory.
* Use lazy initialization to avoid having to generate too many anonymous reference.
*
* <code>
* public class Foo {
* static final class FoofactoryLazyHolder {
* private static final UserDataFactory<Foo> INSTANCE = Foo::new;
* }
* ....
*
* webContents.setUserData(Foo.class, FooFactoryLazyHolder.INSTANCE);
*
* ....
* }
* </code>
*
* @param <T> Class to instantiate.
*/
public interface UserDataFactory<T> { T create(WebContents webContents); }
/** /**
* Initialize various content objects of {@link WebContents} lifetime. * Initialize various content objects of {@link WebContents} lifetime.
* @param productVersion Product version for accessibility. * @param productVersion Product version for accessibility.
...@@ -144,17 +120,6 @@ public interface WebContents extends Parcelable { ...@@ -144,17 +120,6 @@ public interface WebContents extends Parcelable {
*/ */
boolean isDestroyed(); boolean isDestroyed();
/**
* Retrieves or stores a user data object for this WebContents.
* @param key Class instance of the object used as the key.
* @param userDataFactory Factory that creates an object of the generic class. A new object
* is created if it hasn't been created and non-null factory is given.
* @return The created or retrieved user data object. Can be null if the object was
* not created yet, or {@code userDataFactory} is null, or the internal data
* storage is already garbage-collected.
*/
public <T> T getOrSetUserData(Class<T> key, UserDataFactory<T> userDataFactory);
/** /**
* @return The navigation controller associated with this WebContents. * @return The navigation controller associated with this WebContents.
*/ */
......
...@@ -18,7 +18,6 @@ import org.chromium.content_public.browser.NavigationController; ...@@ -18,7 +18,6 @@ import org.chromium.content_public.browser.NavigationController;
import org.chromium.content_public.browser.RenderFrameHost; import org.chromium.content_public.browser.RenderFrameHost;
import org.chromium.content_public.browser.ViewEventSink; import org.chromium.content_public.browser.ViewEventSink;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContents.UserDataFactory;
import org.chromium.content_public.browser.WebContentsObserver; import org.chromium.content_public.browser.WebContentsObserver;
import org.chromium.ui.OverscrollRefreshHandler; import org.chromium.ui.OverscrollRefreshHandler;
import org.chromium.ui.base.EventForwarder; import org.chromium.ui.base.EventForwarder;
...@@ -66,11 +65,6 @@ public class MockWebContents implements WebContents { ...@@ -66,11 +65,6 @@ public class MockWebContents implements WebContents {
return false; return false;
} }
@Override
public <T> T getOrSetUserData(Class<T> key, UserDataFactory<T> userDataFactory) {
return null;
}
@Override @Override
public NavigationController getNavigationController() { public NavigationController getNavigationController() {
return null; return null;
......
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