diff options
author | sgurun <sgurun@chromium.org> | 2016-02-26 17:44:53 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-27 01:45:54 +0000 |
commit | 8d212a4cdf1f26a12bb22e9009fcdf3e73325905 (patch) | |
tree | f586b706d8311a23b49d02f8e74b14186720ed6f | |
parent | 58af5dd041c0bdce1caabd2d85b0aaf7ba70885a (diff) | |
download | chromium_src-8d212a4cdf1f26a12bb22e9009fcdf3e73325905.zip chromium_src-8d212a4cdf1f26a12bb22e9009fcdf3e73325905.tar.gz chromium_src-8d212a4cdf1f26a12bb22e9009fcdf3e73325905.tar.bz2 |
Revert of [Android WebView] Implement support for Network Information API and enable it. (patchset #6 id:100001 of https://codereview.chromium.org/1659363003/ )
Reason for revert:
caused crbug/590383
Original issue's description:
> [Android WebView] Implement support for Network Information API and enable it.
>
> Currently Network Information API and everything related to the
> NetworkChangeNotifier is disabled in WebView. This patch implements
> the required parts to enable Network Information API in WebView.
>
> The WebView implementation is based on NetworkChangeNotifier,
> similar to chrome for Android. However the registration policy
> is different:
> 1. whether we listen to network changes depends on the presence
> of live WebView instances,
> 2. both the band-width and connectivity changes are propagated,
> but a reduced network stack is involved as compared to the chrome
> for android implementation,
> 3. for backward compatibility invoking setNetworkAvailable() on a
> webview disables network information api.
>
> BUG=520088
>
> Committed: https://crrev.com/3673455317898f450211636919c2bef7a8e3fe0f
> Cr-Commit-Position: refs/heads/master@{#376975}
TBR=torne@chromium.org,pauljensen@chromium.org,timvolodine@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=520088
Review URL: https://codereview.chromium.org/1745663003
Cr-Commit-Position: refs/heads/master@{#378061}
11 files changed, 3 insertions, 269 deletions
diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn index d3efe00..db089a5 100644 --- a/android_webview/BUILD.gn +++ b/android_webview/BUILD.gn @@ -450,10 +450,6 @@ source_set("common") { "browser/net/aw_cookie_store_wrapper.h", "browser/net/aw_http_user_agent_settings.cc", "browser/net/aw_http_user_agent_settings.h", - "browser/net/aw_network_change_notifier.cc", - "browser/net/aw_network_change_notifier.h", - "browser/net/aw_network_change_notifier_factory.cc", - "browser/net/aw_network_change_notifier_factory.h", "browser/net/aw_network_delegate.cc", "browser/net/aw_network_delegate.h", "browser/net/aw_request_interceptor.cc", diff --git a/android_webview/android_webview.gyp b/android_webview/android_webview.gyp index 8378d0e..9c9ffa3 100644 --- a/android_webview/android_webview.gyp +++ b/android_webview/android_webview.gyp @@ -354,10 +354,6 @@ 'browser/net/aw_cookie_store_wrapper.h', 'browser/net/aw_http_user_agent_settings.h', 'browser/net/aw_http_user_agent_settings.cc', - 'browser/net/aw_network_change_notifier.cc', - 'browser/net/aw_network_change_notifier.h', - 'browser/net/aw_network_change_notifier_factory.cc', - 'browser/net/aw_network_change_notifier_factory.h', 'browser/net/aw_network_delegate.cc', 'browser/net/aw_network_delegate.h', 'browser/net/aw_request_interceptor.cc', diff --git a/android_webview/browser/aw_browser_main_parts.cc b/android_webview/browser/aw_browser_main_parts.cc index 54a3a52..c598a16 100644 --- a/android_webview/browser/aw_browser_main_parts.cc +++ b/android_webview/browser/aw_browser_main_parts.cc @@ -9,7 +9,6 @@ #include "android_webview/browser/aw_media_client_android.h" #include "android_webview/browser/aw_result_codes.h" #include "android_webview/browser/deferred_gpu_command_service.h" -#include "android_webview/browser/net/aw_network_change_notifier_factory.h" #include "android_webview/common/aw_resource.h" #include "android_webview/common/aw_switches.h" #include "base/android/apk_assets.h" @@ -47,7 +46,8 @@ AwBrowserMainParts::~AwBrowserMainParts() { } void AwBrowserMainParts::PreEarlyInitialization() { - net::NetworkChangeNotifier::SetFactory(new AwNetworkChangeNotifierFactory()); + net::NetworkChangeNotifier::SetFactory( + new net::NetworkChangeNotifierFactoryAndroid()); // Android WebView does not use default MessageLoop. It has its own // Android specific MessageLoop. Also see MainMessageLoopRun. diff --git a/android_webview/browser/net/aw_network_change_notifier.cc b/android_webview/browser/net/aw_network_change_notifier.cc deleted file mode 100644 index f91aefc..0000000 --- a/android_webview/browser/net/aw_network_change_notifier.cc +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2016 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. - -#include "android_webview/browser/net/aw_network_change_notifier.h" - -namespace android_webview { - -AwNetworkChangeNotifier::~AwNetworkChangeNotifier() { - delegate_->RemoveObserver(this); -} - -net::NetworkChangeNotifier::ConnectionType -AwNetworkChangeNotifier::GetCurrentConnectionType() const { - return delegate_->GetCurrentConnectionType(); -} - -void AwNetworkChangeNotifier::GetCurrentMaxBandwidthAndConnectionType( - double* max_bandwidth_mbps, - ConnectionType* connection_type) const { - delegate_->GetCurrentMaxBandwidthAndConnectionType(max_bandwidth_mbps, - connection_type); -} - -bool AwNetworkChangeNotifier::AreNetworkHandlesCurrentlySupported() const { - return false; -} - -void AwNetworkChangeNotifier::GetCurrentConnectedNetworks( - NetworkChangeNotifier::NetworkList* networks) const { - delegate_->GetCurrentlyConnectedNetworks(networks); -} - -net::NetworkChangeNotifier::ConnectionType -AwNetworkChangeNotifier::GetCurrentNetworkConnectionType( - NetworkHandle network) const { - return delegate_->GetNetworkConnectionType(network); -} - -net::NetworkChangeNotifier::NetworkHandle -AwNetworkChangeNotifier::GetCurrentDefaultNetwork() const { - return delegate_->GetCurrentDefaultNetwork(); -} - -void AwNetworkChangeNotifier::OnConnectionTypeChanged() {} - -void AwNetworkChangeNotifier::OnMaxBandwidthChanged( - double max_bandwidth_mbps, - ConnectionType type) { - // Note that this callback is sufficient for Network Information API because - // it also occurs on type changes (see network_change_notifier.h). - NetworkChangeNotifier::NotifyObserversOfMaxBandwidthChange(max_bandwidth_mbps, - type); -} - -void AwNetworkChangeNotifier::OnNetworkConnected(NetworkHandle network) {} -void AwNetworkChangeNotifier::OnNetworkSoonToDisconnect( - NetworkHandle network) {} -void AwNetworkChangeNotifier::OnNetworkDisconnected( - NetworkHandle network) {} -void AwNetworkChangeNotifier::OnNetworkMadeDefault(NetworkHandle network){} - -AwNetworkChangeNotifier::AwNetworkChangeNotifier( - net::NetworkChangeNotifierDelegateAndroid* delegate) - : net::NetworkChangeNotifier(DefaultNetworkChangeCalculatorParams()), - delegate_(delegate) { - delegate_->AddObserver(this); -} - -// static -net::NetworkChangeNotifier::NetworkChangeCalculatorParams -AwNetworkChangeNotifier::DefaultNetworkChangeCalculatorParams() { - net::NetworkChangeNotifier::NetworkChangeCalculatorParams params; - // Use defaults as in network_change_notifier_android.cc - params.ip_address_offline_delay_ = base::TimeDelta::FromSeconds(1); - params.ip_address_online_delay_ = base::TimeDelta::FromSeconds(1); - params.connection_type_offline_delay_ = base::TimeDelta::FromSeconds(0); - params.connection_type_online_delay_ = base::TimeDelta::FromSeconds(0); - return params; -} - -} // namespace android_webview diff --git a/android_webview/browser/net/aw_network_change_notifier.h b/android_webview/browser/net/aw_network_change_notifier.h deleted file mode 100644 index 6fc25b0..0000000 --- a/android_webview/browser/net/aw_network_change_notifier.h +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2016 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. - -#ifndef ANDROID_WEBVIEW_BROWSER_NET_AW_NETWORK_CHANGE_NOTIFIER_H_ -#define ANDROID_WEBVIEW_BROWSER_NET_AW_NETWORK_CHANGE_NOTIFIER_H_ - -#include "base/compiler_specific.h" -#include "base/macros.h" -#include "net/android/network_change_notifier_delegate_android.h" -#include "net/base/network_change_notifier.h" - -namespace android_webview { - -// AwNetworkChangeNotifier is similar to NetworkChangeNotifierAndroid except -// it only propagates max-bandwidth changes in order to make the Network -// Information API work in blink. -// -// This somewhat reduced functionality is necessary because of the way -// NetworkChangeNotifier is enabled in WebView. It is enabled only when there -// are living WebView instances (instead of using ApplicationStatus) hence the -// existing Chrome for Android implementation is not applicable as is -// (see crbug.com/529434). -class AwNetworkChangeNotifier - : public net::NetworkChangeNotifier, - public net::NetworkChangeNotifierDelegateAndroid::Observer { - public: - ~AwNetworkChangeNotifier() override; - - // NetworkChangeNotifier: - ConnectionType GetCurrentConnectionType() const override; - // Requires ACCESS_WIFI_STATE permission in order to provide precise WiFi link - // speed. - void GetCurrentMaxBandwidthAndConnectionType( - double* max_bandwidth_mbps, - ConnectionType* connection_type) const override; - bool AreNetworkHandlesCurrentlySupported() const override; - void GetCurrentConnectedNetworks(NetworkList* network_list) const override; - ConnectionType GetCurrentNetworkConnectionType( - NetworkHandle network) const override; - NetworkHandle GetCurrentDefaultNetwork() const override; - - // NetworkChangeNotifierDelegateAndroid::Observer: - void OnConnectionTypeChanged() override; - void OnMaxBandwidthChanged(double max_bandwidth_mbps, - ConnectionType type) override; - void OnNetworkConnected(NetworkHandle network) override; - void OnNetworkSoonToDisconnect(NetworkHandle network) override; - void OnNetworkDisconnected(NetworkHandle network) override; - void OnNetworkMadeDefault(NetworkHandle network) override; - - private: - friend class AwNetworkChangeNotifierFactory; - - AwNetworkChangeNotifier(net::NetworkChangeNotifierDelegateAndroid* delegate); - - static NetworkChangeCalculatorParams DefaultNetworkChangeCalculatorParams(); - - net::NetworkChangeNotifierDelegateAndroid* const delegate_; - - DISALLOW_COPY_AND_ASSIGN(AwNetworkChangeNotifier); -}; - -} // namespace android_webview - -#endif // ANDROID_WEBVIEW_BROWSER_NET_AW_NETWORK_CHANGE_NOTIFIER_H_ diff --git a/android_webview/browser/net/aw_network_change_notifier_factory.cc b/android_webview/browser/net/aw_network_change_notifier_factory.cc deleted file mode 100644 index f05627f..0000000 --- a/android_webview/browser/net/aw_network_change_notifier_factory.cc +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2016 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. - -#include "android_webview/browser/net/aw_network_change_notifier_factory.h" - -#include "android_webview/browser/net/aw_network_change_notifier.h" - -namespace android_webview { - -AwNetworkChangeNotifierFactory::AwNetworkChangeNotifierFactory() {} - -AwNetworkChangeNotifierFactory::~AwNetworkChangeNotifierFactory() {} - -net::NetworkChangeNotifier* AwNetworkChangeNotifierFactory::CreateInstance() { - return new AwNetworkChangeNotifier(&delegate_); -} - -} // namespace android_webview diff --git a/android_webview/browser/net/aw_network_change_notifier_factory.h b/android_webview/browser/net/aw_network_change_notifier_factory.h deleted file mode 100644 index 6cfbd20..0000000 --- a/android_webview/browser/net/aw_network_change_notifier_factory.h +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2016 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. - -#ifndef ANDROID_WEBVIEW_NET_AW_NETWORK_CHANGE_NOTIFIER_FACTORY_H_ -#define ANDROID_WEBVIEW_NET_AW_NETWORK_CHANGE_NOTIFIER_FACTORY_H_ - -#include "net/android/network_change_notifier_delegate_android.h" -#include "net/base/network_change_notifier_factory.h" - -namespace net { -class NetworkChangeNotifier; -class NetworkChangeNotifierDelegateAndroid; -} - -namespace android_webview { - -// AwNetworkChangeNotifierFactory creates WebView-specific specialization of -// NetworkChangeNotifier. See aw_network_change_notifier.h for more details. -class AwNetworkChangeNotifierFactory : - public net::NetworkChangeNotifierFactory { - public: - // Must be called on the JNI thread. - AwNetworkChangeNotifierFactory(); - - // Must be called on the JNI thread. - ~AwNetworkChangeNotifierFactory() override; - - // NetworkChangeNotifierFactory: - net::NetworkChangeNotifier* CreateInstance() override; - - private: - // Delegate passed to the instances created by this class. - net::NetworkChangeNotifierDelegateAndroid delegate_; - - DISALLOW_COPY_AND_ASSIGN(AwNetworkChangeNotifierFactory); -}; - -} // namespace android_webview - -#endif // ANDROID_WEBVIEW_NET_AW_NETWORK_CHANGE_NOTIFIER_FACTORY_H_ diff --git a/android_webview/glue/glue.gni b/android_webview/glue/glue.gni index e49cd3d..fc9c65a 100644 --- a/android_webview/glue/glue.gni +++ b/android_webview/glue/glue.gni @@ -11,7 +11,6 @@ glue_library_deps = [ "//content/public/android:content_java", "//content/public/android:content_java_resources", "//components/web_contents_delegate_android:web_contents_delegate_android_java_resources", - "//net/android:net_java", "//ui/android:ui_java", "//ui/android:ui_java_resources", ] diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java index 3b4d3a4..13a9b0f 100644 --- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java @@ -34,7 +34,6 @@ import org.chromium.android_webview.AwContentsStatics; import org.chromium.android_webview.AwCookieManager; import org.chromium.android_webview.AwDataReductionProxyManager; import org.chromium.android_webview.AwDevToolsServer; -import org.chromium.android_webview.AwNetworkChangeNotifierRegistrationPolicy; import org.chromium.android_webview.AwQuotaManagerBridge; import org.chromium.android_webview.AwResource; import org.chromium.android_webview.AwSettings; @@ -51,7 +50,6 @@ import org.chromium.base.library_loader.LibraryLoader; import org.chromium.base.library_loader.LibraryProcessType; import org.chromium.base.library_loader.ProcessInitException; import org.chromium.content.browser.ContentViewStatics; -import org.chromium.net.NetworkChangeNotifier; import org.chromium.ui.base.ResourceBundle; import java.io.File; @@ -243,9 +241,6 @@ public class WebViewChromiumFactoryProvider implements WebViewFactoryProvider { setUpResources(webViewPackageName, context); ResourceBundle.initializeLocalePaks(context, R.array.locale_paks); initPlatSupportLibrary(); - NetworkChangeNotifier.init(context); - NetworkChangeNotifier.setAutoDetectConnectivityState( - new AwNetworkChangeNotifierRegistrationPolicy()); final int extraBindFlags = 0; AwBrowserProcess.configureChildProcessLauncher(webViewPackageName, extraBindFlags); AwBrowserProcess.start(context); diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java index 7ec965f..a710d51 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwContents.java +++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java @@ -69,7 +69,6 @@ import org.chromium.content_public.browser.navigation_controller.LoadURLType; import org.chromium.content_public.browser.navigation_controller.UserAgentOverrideOption; import org.chromium.content_public.common.Referrer; import org.chromium.net.NetError; -import org.chromium.net.NetworkChangeNotifier; import org.chromium.ui.base.ActivityWindowAndroid; import org.chromium.ui.base.PageTransition; import org.chromium.ui.base.WindowAndroid; @@ -2537,13 +2536,7 @@ public class AwContents implements SmartClipProvider, public void setNetworkAvailable(boolean networkUp) { if (TRACE) Log.d(TAG, "setNetworkAvailable=%s", networkUp); - if (!isDestroyed(WARN)) { - // For backward compatibility when an app uses this API disable the - // Network Information API to prevent inconsistencies, - // see crbug.com/520088. - NetworkChangeNotifier.setAutoDetectConnectivityState(false); - nativeSetJsOnlineProperty(mNativeAwContents, networkUp); - } + if (!isDestroyed(WARN)) nativeSetJsOnlineProperty(mNativeAwContents, networkUp); } /** diff --git a/android_webview/java/src/org/chromium/android_webview/AwNetworkChangeNotifierRegistrationPolicy.java b/android_webview/java/src/org/chromium/android_webview/AwNetworkChangeNotifierRegistrationPolicy.java deleted file mode 100644 index 798a9af..0000000 --- a/android_webview/java/src/org/chromium/android_webview/AwNetworkChangeNotifierRegistrationPolicy.java +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2016 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.android_webview; - -import org.chromium.net.NetworkChangeNotifierAutoDetect; - -/** - * Registration policy to make sure we only listen to network changes when - * there are live webview instances. - */ -public class AwNetworkChangeNotifierRegistrationPolicy - extends NetworkChangeNotifierAutoDetect.RegistrationPolicy - implements AwContentsLifecycleNotifier.Observer { - - @Override - protected void init(NetworkChangeNotifierAutoDetect notifier) { - super.init(notifier); - AwContentsLifecycleNotifier.addObserver(this); - } - - protected void destroy() { - AwContentsLifecycleNotifier.removeObserver(this); - } - - // AwContentsLifecycleNotifier.Observer - @Override - public void onFirstWebViewCreated() { - register(); - } - - @Override - public void onLastWebViewDestroyed() { - unregister(); - } -} |