Commit d6554d77 authored by Bernhard Bauer's avatar Bernhard Bauer Committed by Commit Bot

[Android] Merge ToolbarModelImpl into ToolbarModel

Also clean up the native side a bit (it doesn't need a weak reference
if it is destroyed from the Java side).

Better diff of the renamed file at
https://gist.github.com/sheepmaster/347a1a7d16dd3b23629888bf467faac5
(via `git fetch https://chromium.googlesource.com/chromium/src refs/changes/58/1006758/3 && git diff FETCH_HEAD^:chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarModelImpl.java FETCH_HEAD:chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarModel.java`)

Change-Id: I8a5fde53c0eed48547faca5486a967d836998fb7
Reviewed-on: https://chromium-review.googlesource.com/1006758Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Commit-Queue: Bernhard Bauer <bauerb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#549919}
parent 8dfbfecd
......@@ -130,7 +130,7 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe
private TabModelSelectorObserver mTabModelSelectorObserver;
private TabModelObserver mTabModelObserver;
private MenuDelegatePhone mMenuDelegatePhone;
private final ToolbarModelImpl mToolbarModel;
private final ToolbarModel mToolbarModel;
private Profile mCurrentProfile;
private BookmarkBridge mBookmarkBridge;
private TemplateUrlServiceObserver mTemplateUrlObserver;
......@@ -195,7 +195,7 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe
mActionBarDelegate = new ViewShiftingActionBarDelegate(activity, controlContainer);
}
mToolbarModel = new ToolbarModelImpl(activity.getBottomSheet(),
mToolbarModel = new ToolbarModel(activity.getBottomSheet(),
activity.supportsModernDesign() && FeatureUtilities.isChromeModernDesignEnabled());
mControlContainer = controlContainer;
assert mControlContainer != null;
......
......@@ -1290,7 +1290,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java",
"java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java",
"java/src/org/chromium/chrome/browser/toolbar/ToolbarModel.java",
"java/src/org/chromium/chrome/browser/toolbar/ToolbarModelImpl.java",
"java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java",
"java/src/org/chromium/chrome/browser/toolbar/ToolbarTabController.java",
"java/src/org/chromium/chrome/browser/toolbar/ToolbarTablet.java",
......
......@@ -24,7 +24,7 @@ import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.search_engines.TemplateUrlService;
import org.chromium.chrome.browser.toolbar.ToolbarModelImpl;
import org.chromium.chrome.browser.toolbar.ToolbarModel;
import org.chromium.chrome.browser.widget.TintedImageButton;
import org.chromium.chrome.test.ChromeActivityTestRule;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
......@@ -62,7 +62,7 @@ public class LocationBarLayoutTest {
private TestToolbarModel mTestToolbarModel;
private class TestToolbarModel extends ToolbarModelImpl {
private class TestToolbarModel extends ToolbarModel {
private String mCurrentUrl;
private String mEditingText;
private String mDisplayText;
......
......@@ -52,7 +52,7 @@ public class ToolbarModelTest {
}
/**
* After closing all {@link Tab}s, the {@link ToolbarModelImpl} should know that it is not
* After closing all {@link Tab}s, the {@link ToolbarModel} should know that it is not
* showing any {@link Tab}.
* @throws InterruptedException
*/
......@@ -126,7 +126,7 @@ public class ToolbarModelTest {
/**
* @param activity A reference to {@link ChromeTabbedActivity} to pull
* {@link android.view.View} data from.
* @return The id of the current {@link Tab} as far as the {@link ToolbarModelImpl} sees it.
* @return The id of the current {@link Tab} as far as the {@link ToolbarModel} sees it.
*/
public static int getCurrentTabId(final ChromeTabbedActivity activity) {
ToolbarLayout toolbar = (ToolbarLayout) activity.findViewById(R.id.toolbar);
......@@ -137,7 +137,7 @@ public class ToolbarModelTest {
return tab != null ? tab.getId() : Tab.INVALID_TAB_ID;
}
private class TestToolbarModel extends ToolbarModelImpl {
private class TestToolbarModel extends ToolbarModel {
private String mDisplayUrl;
private String mFullUrl;
private String mUrl;
......
......@@ -42,30 +42,30 @@ public final class ToolbarSecurityIconTest {
@Test
public void testGetSecurityLevel() {
assertEquals(ConnectionSecurityLevel.NONE,
ToolbarModelImpl.getSecurityLevel(null, !IS_OFFLINE_PAGE, null));
ToolbarModel.getSecurityLevel(null, !IS_OFFLINE_PAGE, null));
assertEquals(ConnectionSecurityLevel.NONE,
ToolbarModelImpl.getSecurityLevel(null, IS_OFFLINE_PAGE, null));
ToolbarModel.getSecurityLevel(null, IS_OFFLINE_PAGE, null));
assertEquals(ConnectionSecurityLevel.NONE,
ToolbarModelImpl.getSecurityLevel(mTab, IS_OFFLINE_PAGE, null));
ToolbarModel.getSecurityLevel(mTab, IS_OFFLINE_PAGE, null));
for (int securityLevel : SECURITY_LEVELS) {
when(mTab.getSecurityLevel()).thenReturn(securityLevel);
assertEquals("Wrong security level returned for " + securityLevel, securityLevel,
ToolbarModelImpl.getSecurityLevel(mTab, !IS_OFFLINE_PAGE, null));
ToolbarModel.getSecurityLevel(mTab, !IS_OFFLINE_PAGE, null));
}
when(mTab.getSecurityLevel()).thenReturn(ConnectionSecurityLevel.SECURE);
assertEquals("Wrong security level returned for HTTPS publisher URL",
ConnectionSecurityLevel.SECURE,
ToolbarModelImpl.getSecurityLevel(mTab, !IS_OFFLINE_PAGE, "https://example.com"));
ToolbarModel.getSecurityLevel(mTab, !IS_OFFLINE_PAGE, "https://example.com"));
assertEquals("Wrong security level returned for HTTP publisher URL",
ConnectionSecurityLevel.HTTP_SHOW_WARNING,
ToolbarModelImpl.getSecurityLevel(mTab, !IS_OFFLINE_PAGE, "http://example.com"));
ToolbarModel.getSecurityLevel(mTab, !IS_OFFLINE_PAGE, "http://example.com"));
when(mTab.getSecurityLevel()).thenReturn(ConnectionSecurityLevel.DANGEROUS);
assertEquals("Wrong security level returned for publisher URL on insecure page",
ConnectionSecurityLevel.DANGEROUS,
ToolbarModelImpl.getSecurityLevel(mTab, !IS_OFFLINE_PAGE, null));
ToolbarModel.getSecurityLevel(mTab, !IS_OFFLINE_PAGE, null));
}
@Test
......@@ -73,56 +73,56 @@ public final class ToolbarSecurityIconTest {
for (int securityLevel : SECURITY_LEVELS) {
assertEquals("Wrong phone resource for security level " + securityLevel,
R.drawable.offline_pin_round,
ToolbarModelImpl.getSecurityIconResource(
ToolbarModel.getSecurityIconResource(
securityLevel, IS_SMALL_DEVICE, IS_OFFLINE_PAGE));
assertEquals("Wrong tablet resource for security level " + securityLevel,
R.drawable.offline_pin_round,
ToolbarModelImpl.getSecurityIconResource(
ToolbarModel.getSecurityIconResource(
securityLevel, !IS_SMALL_DEVICE, IS_OFFLINE_PAGE));
}
assertEquals(0,
ToolbarModelImpl.getSecurityIconResource(
ToolbarModel.getSecurityIconResource(
ConnectionSecurityLevel.NONE, IS_SMALL_DEVICE, !IS_OFFLINE_PAGE));
assertEquals(R.drawable.omnibox_info,
ToolbarModelImpl.getSecurityIconResource(
ToolbarModel.getSecurityIconResource(
ConnectionSecurityLevel.NONE, !IS_SMALL_DEVICE, !IS_OFFLINE_PAGE));
assertEquals(R.drawable.omnibox_info,
ToolbarModelImpl.getSecurityIconResource(ConnectionSecurityLevel.HTTP_SHOW_WARNING,
ToolbarModel.getSecurityIconResource(ConnectionSecurityLevel.HTTP_SHOW_WARNING,
IS_SMALL_DEVICE, !IS_OFFLINE_PAGE));
assertEquals(R.drawable.omnibox_info,
ToolbarModelImpl.getSecurityIconResource(ConnectionSecurityLevel.HTTP_SHOW_WARNING,
ToolbarModel.getSecurityIconResource(ConnectionSecurityLevel.HTTP_SHOW_WARNING,
!IS_SMALL_DEVICE, !IS_OFFLINE_PAGE));
assertEquals(R.drawable.omnibox_https_invalid,
ToolbarModelImpl.getSecurityIconResource(
ToolbarModel.getSecurityIconResource(
ConnectionSecurityLevel.DANGEROUS, IS_SMALL_DEVICE, !IS_OFFLINE_PAGE));
assertEquals(R.drawable.omnibox_https_invalid,
ToolbarModelImpl.getSecurityIconResource(
ToolbarModel.getSecurityIconResource(
ConnectionSecurityLevel.DANGEROUS, !IS_SMALL_DEVICE, !IS_OFFLINE_PAGE));
assertEquals(R.drawable.omnibox_https_valid,
ToolbarModelImpl.getSecurityIconResource(
ToolbarModel.getSecurityIconResource(
ConnectionSecurityLevel.SECURE_WITH_POLICY_INSTALLED_CERT, IS_SMALL_DEVICE,
!IS_OFFLINE_PAGE));
assertEquals(R.drawable.omnibox_https_valid,
ToolbarModelImpl.getSecurityIconResource(
ToolbarModel.getSecurityIconResource(
ConnectionSecurityLevel.SECURE_WITH_POLICY_INSTALLED_CERT, !IS_SMALL_DEVICE,
!IS_OFFLINE_PAGE));
assertEquals(R.drawable.omnibox_https_valid,
ToolbarModelImpl.getSecurityIconResource(
ToolbarModel.getSecurityIconResource(
ConnectionSecurityLevel.SECURE, IS_SMALL_DEVICE, !IS_OFFLINE_PAGE));
assertEquals(R.drawable.omnibox_https_valid,
ToolbarModelImpl.getSecurityIconResource(
ToolbarModel.getSecurityIconResource(
ConnectionSecurityLevel.SECURE, !IS_SMALL_DEVICE, !IS_OFFLINE_PAGE));
assertEquals(R.drawable.omnibox_https_valid,
ToolbarModelImpl.getSecurityIconResource(
ToolbarModel.getSecurityIconResource(
ConnectionSecurityLevel.EV_SECURE, IS_SMALL_DEVICE, !IS_OFFLINE_PAGE));
assertEquals(R.drawable.omnibox_https_valid,
ToolbarModelImpl.getSecurityIconResource(
ToolbarModel.getSecurityIconResource(
ConnectionSecurityLevel.EV_SECURE, !IS_SMALL_DEVICE, !IS_OFFLINE_PAGE));
}
}
......@@ -13,11 +13,15 @@
#include "jni/ToolbarModel_jni.h"
using base::android::JavaParamRef;
using base::android::JavaRef;
using base::android::ScopedJavaLocalRef;
ToolbarModelAndroid::ToolbarModelAndroid(JNIEnv* env, jobject jdelegate)
: toolbar_model_(new ToolbarModelImpl(this, content::kMaxURLDisplayChars)),
weak_java_delegate_(env, jdelegate) {}
ToolbarModelAndroid::ToolbarModelAndroid(JNIEnv* env,
const JavaRef<jobject>& obj)
: toolbar_model_(
std::make_unique<ToolbarModelImpl>(this,
content::kMaxURLDisplayChars)),
java_object_(obj) {}
ToolbarModelAndroid::~ToolbarModelAndroid() {
}
......@@ -43,18 +47,12 @@ ScopedJavaLocalRef<jstring> ToolbarModelAndroid::GetURLForDisplay(
content::WebContents* ToolbarModelAndroid::GetActiveWebContents() const {
JNIEnv* env = base::android::AttachCurrentThread();
ScopedJavaLocalRef<jobject> jdelegate = weak_java_delegate_.get(env);
if (!jdelegate.obj())
return NULL;
ScopedJavaLocalRef<jobject> jweb_contents =
Java_ToolbarModelDelegate_getActiveWebContents(env, jdelegate);
Java_ToolbarModel_getActiveWebContents(env, java_object_);
return content::WebContents::FromJavaWebContents(jweb_contents);
}
// static
jlong JNI_ToolbarModel_Init(JNIEnv* env,
const JavaParamRef<jobject>& obj,
const JavaParamRef<jobject>& delegate) {
ToolbarModelAndroid* toolbar_model = new ToolbarModelAndroid(env, delegate);
return reinterpret_cast<intptr_t>(toolbar_model);
jlong JNI_ToolbarModel_Init(JNIEnv* env, const JavaParamRef<jobject>& obj) {
return reinterpret_cast<intptr_t>(new ToolbarModelAndroid(env, obj));
}
......@@ -8,7 +8,6 @@
#include <memory>
#include "base/android/jni_android.h"
#include "base/android/jni_weak_ref.h"
#include "base/android/scoped_java_ref.h"
#include "base/macros.h"
#include "chrome/browser/ui/toolbar/chrome_toolbar_model_delegate.h"
......@@ -21,7 +20,7 @@ class WebContents;
// Owns a ToolbarModel and provides a way for Java to interact with it.
class ToolbarModelAndroid : public ChromeToolbarModelDelegate {
public:
explicit ToolbarModelAndroid(JNIEnv* env, jobject jdelegate);
ToolbarModelAndroid(JNIEnv* env, const base::android::JavaRef<jobject>& obj);
~ToolbarModelAndroid() override;
void Destroy(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
......@@ -37,7 +36,7 @@ class ToolbarModelAndroid : public ChromeToolbarModelDelegate {
private:
std::unique_ptr<ToolbarModel> toolbar_model_;
JavaObjectWeakGlobalRef weak_java_delegate_;
base::android::ScopedJavaGlobalRef<jobject> java_object_;
DISALLOW_IMPLICIT_CONSTRUCTORS(ToolbarModelAndroid);
};
......
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