summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsgurun <sgurun@chromium.org>2016-02-26 17:44:53 -0800
committerCommit bot <commit-bot@chromium.org>2016-02-27 01:45:54 +0000
commit8d212a4cdf1f26a12bb22e9009fcdf3e73325905 (patch)
treef586b706d8311a23b49d02f8e74b14186720ed6f
parent58af5dd041c0bdce1caabd2d85b0aaf7ba70885a (diff)
downloadchromium_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}
-rw-r--r--android_webview/BUILD.gn4
-rw-r--r--android_webview/android_webview.gyp4
-rw-r--r--android_webview/browser/aw_browser_main_parts.cc4
-rw-r--r--android_webview/browser/net/aw_network_change_notifier.cc82
-rw-r--r--android_webview/browser/net/aw_network_change_notifier.h66
-rw-r--r--android_webview/browser/net/aw_network_change_notifier_factory.cc19
-rw-r--r--android_webview/browser/net/aw_network_change_notifier_factory.h41
-rw-r--r--android_webview/glue/glue.gni1
-rw-r--r--android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java5
-rw-r--r--android_webview/java/src/org/chromium/android_webview/AwContents.java9
-rw-r--r--android_webview/java/src/org/chromium/android_webview/AwNetworkChangeNotifierRegistrationPolicy.java37
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();
- }
-}