Commit 70a416cd authored by dfalcantara's avatar dfalcantara Committed by Commit bot

Add more methods to delegates for more upstreaming

* ActivityDelegate takes in classes instead of Strings
  so that you can do isInstance on them.

* TabDelegate introduces a new function for creating Tabs
  in a specific case.

BUG=443773

Review URL: https://codereview.chromium.org/819743002

Cr-Commit-Position: refs/heads/master@{#309447}
parent 787bcbae
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
package org.chromium.chrome.browser.tabmodel.document; package org.chromium.chrome.browser.tabmodel.document;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.app.Activity;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
...@@ -28,17 +29,27 @@ import java.util.List; ...@@ -28,17 +29,27 @@ import java.util.List;
*/ */
@TargetApi(Build.VERSION_CODES.LOLLIPOP) @TargetApi(Build.VERSION_CODES.LOLLIPOP)
public class ActivityDelegate { public class ActivityDelegate {
private final String mRegularActivityName; private final Class<?> mRegularClass;
private final String mIncognitoActivityName; private final Class<?> mIncognitoClass;
/** /**
* Creates a ActivityDelegate. * Creates a ActivityDelegate.
* @param regularName Name of the regular DocumentActivity. * @param regularClass Class of the regular DocumentActivity.
* @param incognitoName Name of the Incognito DocumentActivity. * @param incognitoClass Class of the Incognito DocumentActivity.
*/ */
public ActivityDelegate(String regularName, String incognitoName) { public ActivityDelegate(Class<?> regularClass, Class<?> incognitoClass) {
mRegularActivityName = regularName; mRegularClass = regularClass;
mIncognitoActivityName = incognitoName; mIncognitoClass = incognitoClass;
}
/**
* Returns whether an Activity is a DocumentActivity. Assumes the Incognito Activity inherits
* from the regular Activity.
* @param activity Activity to check.
* @return Whether the Activity is a DocumentActivity.
*/
public boolean isDocumentActivity(Activity activity) {
return mRegularClass.isInstance(activity);
} }
/** /**
...@@ -49,7 +60,7 @@ public class ActivityDelegate { ...@@ -49,7 +60,7 @@ public class ActivityDelegate {
*/ */
public boolean isValidActivity(boolean isIncognito, Intent intent) { public boolean isValidActivity(boolean isIncognito, Intent intent) {
if (intent == null) return false; if (intent == null) return false;
String desiredClassName = isIncognito ? mIncognitoActivityName : mRegularActivityName; String desiredClassName = isIncognito ? mIncognitoClass.getName() : mRegularClass.getName();
String className = null; String className = null;
if (intent.getComponent() == null) { if (intent.getComponent() == null) {
Context context = ApplicationStatus.getApplicationContext(); Context context = ApplicationStatus.getApplicationContext();
......
...@@ -7,7 +7,9 @@ package org.chromium.chrome.browser.tabmodel.document; ...@@ -7,7 +7,9 @@ package org.chromium.chrome.browser.tabmodel.document;
import android.app.Activity; import android.app.Activity;
import org.chromium.chrome.browser.Tab; import org.chromium.chrome.browser.Tab;
import org.chromium.chrome.browser.document.PendingDocumentData;
import org.chromium.chrome.browser.tabmodel.document.DocumentTabModel.Entry; import org.chromium.chrome.browser.tabmodel.document.DocumentTabModel.Entry;
import org.chromium.content_public.browser.LoadUrlParams;
/** /**
* Provides Tabs to a DocumentTabModel. * Provides Tabs to a DocumentTabModel.
...@@ -22,6 +24,13 @@ public interface TabDelegate { ...@@ -22,6 +24,13 @@ public interface TabDelegate {
*/ */
Tab getActivityTab(boolean incognito, ActivityDelegate delgate, Activity activity); Tab getActivityTab(boolean incognito, ActivityDelegate delgate, Activity activity);
/**
* Opens a new Tab in the foreground.
* Assumed to be triggered by a window.open().
*/
void createTabInForeground(Activity parentActivity, boolean incognito,
LoadUrlParams loadUrlParams, PendingDocumentData documentParams);
/** /**
* Creates a frozen Tab for the Entry. * Creates a frozen Tab for the Entry.
* @param entry Entry containing TabState. * @param entry Entry containing TabState.
......
...@@ -85,8 +85,7 @@ public class DocumentTabModelImplTest extends NativeLibraryTestBase { ...@@ -85,8 +85,7 @@ public class DocumentTabModelImplTest extends NativeLibraryTestBase {
CommandLine.init(null); CommandLine.init(null);
loadNativeLibraryAndInitBrowserProcess(); loadNativeLibraryAndInitBrowserProcess();
mActivityDelegate = mActivityDelegate = new MockActivityDelegate();
new MockActivityDelegate("DocumentActivity", "IncognitoDocumentActivity");
mTabDelegate = new MockTabDelegate(); mTabDelegate = new MockTabDelegate();
mContext = new AdvancedMockContext(getInstrumentation().getTargetContext()); mContext = new AdvancedMockContext(getInstrumentation().getTargetContext());
} }
......
...@@ -47,8 +47,7 @@ public class OffTheRecordDocumentTabModelTest extends NativeLibraryTestBase { ...@@ -47,8 +47,7 @@ public class OffTheRecordDocumentTabModelTest extends NativeLibraryTestBase {
mContext = getInstrumentation().getTargetContext(); mContext = getInstrumentation().getTargetContext();
mStorageDelegate = new MockStorageDelegate(mContext.getCacheDir(), true); mStorageDelegate = new MockStorageDelegate(mContext.getCacheDir(), true);
mActivityDelegate = mActivityDelegate = new MockActivityDelegate();
new MockActivityDelegate("DocumentActivity", "IncognitoDocumentActivity");
mTabDelegate = new MockTabDelegate(); mTabDelegate = new MockTabDelegate();
} }
......
...@@ -6,6 +6,9 @@ package org.chromium.chrome.test.util.browser.tabmodel.document; ...@@ -6,6 +6,9 @@ package org.chromium.chrome.test.util.browser.tabmodel.document;
import static junit.framework.Assert.assertTrue; import static junit.framework.Assert.assertTrue;
import android.app.Activity;
import android.content.Intent;
import org.chromium.chrome.browser.tabmodel.document.ActivityDelegate; import org.chromium.chrome.browser.tabmodel.document.ActivityDelegate;
import org.chromium.chrome.browser.tabmodel.document.DocumentTabModel.Entry; import org.chromium.chrome.browser.tabmodel.document.DocumentTabModel.Entry;
...@@ -21,11 +24,19 @@ public class MockActivityDelegate extends ActivityDelegate { ...@@ -21,11 +24,19 @@ public class MockActivityDelegate extends ActivityDelegate {
/** /**
* Creates a MockActivityDelegate. * Creates a MockActivityDelegate.
* @param regularName Name of the regular DocumentActivity.
* @param incognitoName Name of the Incognito DocumentActivity.
*/ */
public MockActivityDelegate(String regularName, String incognitoName) { public MockActivityDelegate() {
super(regularName, incognitoName); super(null, null);
}
@Override
public boolean isDocumentActivity(Activity activity) {
return true;
}
@Override
public boolean isValidActivity(boolean isIncognito, Intent intent) {
return true;
} }
@Override @Override
......
...@@ -7,9 +7,11 @@ package org.chromium.chrome.test.util.browser.tabmodel.document; ...@@ -7,9 +7,11 @@ package org.chromium.chrome.test.util.browser.tabmodel.document;
import android.app.Activity; import android.app.Activity;
import org.chromium.chrome.browser.Tab; import org.chromium.chrome.browser.Tab;
import org.chromium.chrome.browser.document.PendingDocumentData;
import org.chromium.chrome.browser.tabmodel.document.ActivityDelegate; import org.chromium.chrome.browser.tabmodel.document.ActivityDelegate;
import org.chromium.chrome.browser.tabmodel.document.DocumentTabModel.Entry; import org.chromium.chrome.browser.tabmodel.document.DocumentTabModel.Entry;
import org.chromium.chrome.browser.tabmodel.document.TabDelegate; import org.chromium.chrome.browser.tabmodel.document.TabDelegate;
import org.chromium.content_public.browser.LoadUrlParams;
/** /**
* Mocks out calls to get Tabs for the DocumentTabModel. * Mocks out calls to get Tabs for the DocumentTabModel.
...@@ -20,6 +22,11 @@ public class MockTabDelegate implements TabDelegate { ...@@ -20,6 +22,11 @@ public class MockTabDelegate implements TabDelegate {
return null; return null;
} }
@Override
public void createTabInForeground(Activity parentActivity, boolean incognito,
LoadUrlParams loadUrlParams, PendingDocumentData documentParams) {
}
@Override @Override
public Tab createFrozenTab(Entry entry) { public Tab createFrozenTab(Entry entry) {
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