Commit 76f8bf1c authored by Scott Violet's avatar Scott Violet Committed by Commit Bot

weblayer: converts NavigationState to proper enum style

BUG=none
TEST=none

Change-Id: I0bb59ce7360419c14a67074fb5a0d432aac6634d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1906308
Auto-Submit: Scott Violet <sky@chromium.org>
Commit-Queue: John Abd-El-Malek <jam@chromium.org>
Reviewed-by: default avatarJohn Abd-El-Malek <jam@chromium.org>
Cr-Commit-Position: refs/heads/master@{#714032}
parent f5590fbf
...@@ -17,6 +17,7 @@ generate_product_config_srcjar("weblayer_product_config") { ...@@ -17,6 +17,7 @@ generate_product_config_srcjar("weblayer_product_config") {
java_cpp_enum("generated_enums") { java_cpp_enum("generated_enums") {
sources = [ sources = [
"//weblayer/public/navigation.h",
"//weblayer/public/new_tab_delegate.h", "//weblayer/public/new_tab_delegate.h",
"//weblayer/public/profile.h", "//weblayer/public/profile.h",
] ]
...@@ -95,6 +96,7 @@ android_library("interfaces_java") { ...@@ -95,6 +96,7 @@ android_library("interfaces_java") {
"org/chromium/weblayer_private/interfaces/APICallException.java", "org/chromium/weblayer_private/interfaces/APICallException.java",
"org/chromium/weblayer_private/interfaces/BrowserFragmentArgs.java", "org/chromium/weblayer_private/interfaces/BrowserFragmentArgs.java",
"org/chromium/weblayer_private/interfaces/BrowsingDataType.java", "org/chromium/weblayer_private/interfaces/BrowsingDataType.java",
"org/chromium/weblayer_private/interfaces/NavigationState.java",
"org/chromium/weblayer_private/interfaces/NewTabType.java", "org/chromium/weblayer_private/interfaces/NewTabType.java",
"org/chromium/weblayer_private/interfaces/ObjectWrapper.java", "org/chromium/weblayer_private/interfaces/ObjectWrapper.java",
"org/chromium/weblayer_private/interfaces/WebLayerVersion.java", "org/chromium/weblayer_private/interfaces/WebLayerVersion.java",
......
...@@ -13,6 +13,7 @@ import org.chromium.weblayer_private.interfaces.APICallException; ...@@ -13,6 +13,7 @@ import org.chromium.weblayer_private.interfaces.APICallException;
import org.chromium.weblayer_private.interfaces.IClientNavigation; import org.chromium.weblayer_private.interfaces.IClientNavigation;
import org.chromium.weblayer_private.interfaces.INavigation; import org.chromium.weblayer_private.interfaces.INavigation;
import org.chromium.weblayer_private.interfaces.INavigationControllerClient; import org.chromium.weblayer_private.interfaces.INavigationControllerClient;
import org.chromium.weblayer_private.interfaces.NavigationState;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
...@@ -37,10 +38,28 @@ public final class NavigationImpl extends INavigation.Stub { ...@@ -37,10 +38,28 @@ public final class NavigationImpl extends INavigation.Stub {
return mClientNavigation; return mClientNavigation;
} }
@NavigationState
private static int implTypeToJavaType(@ImplNavigationState int type) {
switch (type) {
case ImplNavigationState.WAITING_RESPONSE:
return NavigationState.WAITING_RESPONSE;
case ImplNavigationState.RECEIVING_BYTES:
return NavigationState.RECEIVING_BYTES;
case ImplNavigationState.COMPLETE:
return NavigationState.COMPLETE;
case ImplNavigationState.FAILED:
return NavigationState.FAILED;
}
assert false;
return NavigationState.FAILED;
}
@Override @Override
@NavigationState
public int getState() { public int getState() {
throwIfNativeDestroyed(); throwIfNativeDestroyed();
return NavigationImplJni.get().getState(mNativeNavigationImpl, NavigationImpl.this); return implTypeToJavaType(
NavigationImplJni.get().getState(mNativeNavigationImpl, NavigationImpl.this));
} }
@Override @Override
......
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.weblayer_private.interfaces;
import androidx.annotation.IntDef;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@IntDef({NavigationState.WAITING_RESPONSE, NavigationState.RECEIVING_BYTES,
NavigationState.COMPLETE, NavigationState.FAILED})
@Retention(RetentionPolicy.SOURCE)
public @interface NavigationState {
int WAITING_RESPONSE = 0;
int RECEIVING_BYTES = 1;
int COMPLETE = 2;
int FAILED = 3;
}
...@@ -64,9 +64,9 @@ const std::vector<GURL>& NavigationImpl::GetRedirectChain() { ...@@ -64,9 +64,9 @@ const std::vector<GURL>& NavigationImpl::GetRedirectChain() {
return navigation_handle_->GetRedirectChain(); return navigation_handle_->GetRedirectChain();
} }
Navigation::State NavigationImpl::GetState() { NavigationState NavigationImpl::GetState() {
NOTIMPLEMENTED() << "TODO: properly implement this"; NOTIMPLEMENTED() << "TODO: properly implement this";
return Navigation::State::kWaitingResponse; return NavigationState::kWaitingResponse;
} }
bool NavigationImpl::IsSameDocument() { bool NavigationImpl::IsSameDocument() {
......
...@@ -51,7 +51,7 @@ class NavigationImpl : public Navigation { ...@@ -51,7 +51,7 @@ class NavigationImpl : public Navigation {
// Navigation implementation: // Navigation implementation:
GURL GetURL() override; GURL GetURL() override;
const std::vector<GURL>& GetRedirectChain() override; const std::vector<GURL>& GetRedirectChain() override;
State GetState() override; NavigationState GetState() override;
bool IsSameDocument() override; bool IsSameDocument() override;
content::NavigationHandle* navigation_handle_; content::NavigationHandle* navigation_handle_;
......
...@@ -33,6 +33,7 @@ android_library("java") { ...@@ -33,6 +33,7 @@ android_library("java") {
"org/chromium/weblayer/NavigationCallback.java", "org/chromium/weblayer/NavigationCallback.java",
"org/chromium/weblayer/NavigationController.java", "org/chromium/weblayer/NavigationController.java",
"org/chromium/weblayer/Navigation.java", "org/chromium/weblayer/Navigation.java",
"org/chromium/weblayer/NavigationState.java",
"org/chromium/weblayer/NewTabCallback.java", "org/chromium/weblayer/NewTabCallback.java",
"org/chromium/weblayer/NewTabType.java", "org/chromium/weblayer/NewTabType.java",
"org/chromium/weblayer/ObserverList.java", "org/chromium/weblayer/ObserverList.java",
......
...@@ -21,37 +21,16 @@ import java.util.List; ...@@ -21,37 +21,16 @@ import java.util.List;
*/ */
public final class Navigation extends IClientNavigation.Stub { public final class Navigation extends IClientNavigation.Stub {
private final INavigation mNavigationImpl; private final INavigation mNavigationImpl;
// TODO(sky): investigate using java_cpp_enum.
public enum State {
WAITING_RESPONSE,
RECEIVING_BYTES,
COMPLETE,
FAILED,
}
private static State ipcStateToState(int state) {
switch (state) {
case 0:
return State.WAITING_RESPONSE;
case 1:
return State.RECEIVING_BYTES;
case 2:
return State.COMPLETE;
case 3:
return State.FAILED;
default:
throw new IllegalArgumentException("Unexpected state " + state);
}
}
Navigation(INavigation impl) { Navigation(INavigation impl) {
mNavigationImpl = impl; mNavigationImpl = impl;
} }
public State getState() { @NavigationState
public int getState() {
ThreadCheck.ensureOnUiThread(); ThreadCheck.ensureOnUiThread();
try { try {
return ipcStateToState(mNavigationImpl.getState()); return mNavigationImpl.getState();
} catch (RemoteException e) { } catch (RemoteException e) {
throw new APICallException(e); throw new APICallException(e);
} }
......
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.weblayer;
import androidx.annotation.IntDef;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* @hide
*/
@IntDef({NavigationState.WAITING_RESPONSE, NavigationState.RECEIVING_BYTES,
NavigationState.COMPLETE, NavigationState.FAILED})
@Retention(RetentionPolicy.SOURCE)
public @interface NavigationState {
int WAITING_RESPONSE =
org.chromium.weblayer_private.interfaces.NavigationState.WAITING_RESPONSE;
int RECEIVING_BYTES = org.chromium.weblayer_private.interfaces.NavigationState.RECEIVING_BYTES;
int COMPLETE = org.chromium.weblayer_private.interfaces.NavigationState.COMPLETE;
int FAILED = org.chromium.weblayer_private.interfaces.NavigationState.FAILED;
}
...@@ -11,6 +11,17 @@ class GURL; ...@@ -11,6 +11,17 @@ class GURL;
namespace weblayer { namespace weblayer {
// These types are sent over IPC and across different versions. Never remove
// or change the order.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.weblayer_private
// GENERATED_JAVA_CLASS_NAME_OVERRIDE: ImplNavigationState
enum class NavigationState {
kWaitingResponse = 0,
kReceivingBytes = 1,
kComplete = 2,
kFailed = 3,
};
class Navigation { class Navigation {
public: public:
virtual ~Navigation() {} virtual ~Navigation() {}
...@@ -24,16 +35,7 @@ class Navigation { ...@@ -24,16 +35,7 @@ class Navigation {
// there will be one entry in the list). // there will be one entry in the list).
virtual const std::vector<GURL>& GetRedirectChain() = 0; virtual const std::vector<GURL>& GetRedirectChain() = 0;
// These types are sent over IPC and across different versions. Never remove virtual NavigationState GetState() = 0;
// or change the order.
enum State {
kWaitingResponse = 0,
kReceivingBytes = 1,
kComplete = 2,
kFailed = 3,
};
virtual State GetState() = 0;
// Whether the navigation happened without changing document. Examples of // Whether the navigation happened without changing document. Examples of
// same document navigations are: // same document navigations are:
......
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