Commit 0ef27f64 authored by gambard's avatar gambard Committed by Commit bot

Remove CRWWebControllerProvider

WebControllerProvider is not used anymore, it can be removed.

BUG=546231

Review-Url: https://codereview.chromium.org/2612433002
Cr-Commit-Position: refs/heads/master@{#441393}
parent 4c5054ae
......@@ -27,7 +27,6 @@ source_set("browser") {
"//base",
"//components/autofill/core/browser",
"//components/autofill/core/common",
"//ios/public/provider/web",
"//ios/web",
"//ui/gfx/geometry",
]
......
......@@ -4,7 +4,6 @@
#include "ios/chrome/app/startup/provider_registration.h"
#include "ios/chrome/browser/web/web_controller_provider_factory_impl.h"
#include "ios/public/provider/chrome/browser/chrome_browser_provider.h"
@implementation ProviderRegistration
......@@ -15,7 +14,6 @@
// Leak the providers.
ios::SetChromeBrowserProvider(provider.release());
ios::SetWebControllerProviderFactory(new WebControllerProviderFactoryImpl());
}
@end
......@@ -92,7 +92,6 @@ include_rules = [
"+ios/net",
"+ios/public/provider/chrome",
"+ios/public/provider/components",
"+ios/public/provider/web",
"+ios/web/public",
"+libxml/xmlwriter.h",
"+net",
......
......@@ -40,7 +40,6 @@ source_set("reading_list") {
"//ios/chrome/browser/browser_state",
"//ios/chrome/browser/favicon",
"//ios/chrome/browser/history",
"//ios/public/provider/web",
"//ios/web",
"//net",
"//url",
......
......@@ -21,26 +21,6 @@ source_set("web") {
"//ios/web",
"//ui/base",
]
public_deps = [
":web_arc",
]
}
source_set("web_arc") {
visibility = [ ":web" ]
sources = [
"web_controller_provider_factory_impl.h",
"web_controller_provider_factory_impl.mm",
"web_controller_provider_impl.h",
"web_controller_provider_impl.mm",
]
deps = [
"//base",
"//ios/public/provider/web",
"//ios/web",
"//url",
]
configs += [ "//build/config/compiler:enable_arc" ]
}
source_set("unit_tests") {
......
......@@ -11,9 +11,4 @@ specific_include_rules = {
"^early_page_script_perftest\.mm$": [
"+ios/web/web_state/js/page_script_util.h",
],
# TODO(crbug.com/546231): Remove this exception.
"^web_controller_provider_impl\.mm$": [
"+ios/web/web_state/ui/crw_web_controller.h",
"+ios/web/web_state/web_state_impl.h",
],
}
// 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 IOS_CHROME_BROWSER_WEB_WEB_CONTROLLER_PROVIDER_FACTORY_IMPL_H_
#define IOS_CHROME_BROWSER_WEB_WEB_CONTROLLER_PROVIDER_FACTORY_IMPL_H_
#include <memory>
#import "ios/public/provider/web/web_controller_provider_factory.h"
// Concrete implementation of ios::WebControllerProviderFactory.
class WebControllerProviderFactoryImpl
: public ios::WebControllerProviderFactory {
public:
WebControllerProviderFactoryImpl();
~WebControllerProviderFactoryImpl() override;
// ios::WebControllerProviderFactory implementation.
std::unique_ptr<ios::WebControllerProvider> CreateWebControllerProvider(
web::BrowserState* browser_state) override;
};
#endif // IOS_CHROME_BROWSER_WEB_WEB_CONTROLLER_PROVIDER_FACTORY_IMPL_H_
// 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.
#import "ios/chrome/browser/web/web_controller_provider_factory_impl.h"
#include "base/memory/ptr_util.h"
#import "ios/chrome/browser/web/web_controller_provider_impl.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
WebControllerProviderFactoryImpl::WebControllerProviderFactoryImpl() {}
WebControllerProviderFactoryImpl::~WebControllerProviderFactoryImpl() {}
std::unique_ptr<ios::WebControllerProvider>
WebControllerProviderFactoryImpl::CreateWebControllerProvider(
web::BrowserState* browser_state) {
return base::MakeUnique<WebControllerProviderImpl>(browser_state);
}
// Copyright 2015 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 IOS_CHROME_BROWSER_WEB_WEB_CONTROLLER_PROVIDER_IMPL_H_
#define IOS_CHROME_BROWSER_WEB_WEB_CONTROLLER_PROVIDER_IMPL_H_
#include <memory>
#import "ios/public/provider/web/web_controller_provider.h"
namespace web {
class WebStateImpl;
}
// Concrete implementation of ios::WebControllerProvider.
class WebControllerProviderImpl : public ios::WebControllerProvider {
public:
explicit WebControllerProviderImpl(web::BrowserState* browser_state);
~WebControllerProviderImpl() override;
// ios::WebControllerProvider implementation.
bool SuppressesDialogs() const override;
void SetSuppressesDialogs(bool should_suppress_dialogs) override;
void LoadURL(const GURL& url) override;
web::WebState* GetWebState() const override;
void InjectScript(const std::string& script,
web::JavaScriptResultBlock completion) override;
private:
std::unique_ptr<web::WebStateImpl> web_state_impl_;
GURL last_requested_url_;
bool suppresses_dialogs_;
};
#endif // IOS_CHROME_BROWSER_WEB_WEB_CONTROLLER_PROVIDER_IMPL_H_
// Copyright 2015 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 "ios/chrome/browser/web/web_controller_provider_impl.h"
#include "base/memory/ptr_util.h"
#include "base/strings/sys_string_conversions.h"
#import "ios/web/public/navigation_manager.h"
#import "ios/web/web_state/ui/crw_web_controller.h"
#import "ios/web/web_state/web_state_impl.h"
#include "url/gurl.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
WebControllerProviderImpl::WebControllerProviderImpl(
web::BrowserState* browser_state)
: ios::WebControllerProvider(browser_state),
web_state_impl_(base::MakeUnique<web::WebStateImpl>(browser_state)),
suppresses_dialogs_(false) {
DCHECK(browser_state);
web_state_impl_->GetNavigationManagerImpl().InitializeSession(nil, nil, NO,
-1);
[web_state_impl_->GetWebController() setWebUsageEnabled:YES];
}
WebControllerProviderImpl::~WebControllerProviderImpl() {}
bool WebControllerProviderImpl::SuppressesDialogs() const {
return suppresses_dialogs_;
}
void WebControllerProviderImpl::SetSuppressesDialogs(
bool should_suppress_dialogs) {
if (suppresses_dialogs_ != should_suppress_dialogs) {
suppresses_dialogs_ = should_suppress_dialogs;
[web_state_impl_->GetWebController()
setShouldSuppressDialogs:suppresses_dialogs_];
}
}
void WebControllerProviderImpl::LoadURL(const GURL& url) {
if (!url.is_valid())
return;
[web_state_impl_->GetWebController()
loadWithParams:web::NavigationManager::WebLoadParams(url)];
[web_state_impl_->GetWebController() triggerPendingLoad];
last_requested_url_ = url;
}
web::WebState* WebControllerProviderImpl::GetWebState() const {
return web_state_impl_.get();
}
void WebControllerProviderImpl::InjectScript(
const std::string& script,
web::JavaScriptResultBlock completion) {
if (web_state_impl_ &&
web_state_impl_->GetVisibleURL() == last_requested_url_) {
// Only inject the script if the web controller has finished loading the
// last requested url.
NSString* scriptString = base::SysUTF8ToNSString(script);
[web_state_impl_->GetWebController() executeJavaScript:scriptString
completionHandler:completion];
} else if (completion) {
// If the web controller isn't ready, call the |completion| immediately.
completion(nil, nil);
}
}
# Copyright 2015 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.
source_set("web") {
configs += [ "//build/config/compiler:enable_arc" ]
sources = [
"web_controller_provider.h",
"web_controller_provider.mm",
"web_controller_provider_factory.h",
"web_controller_provider_factory.mm",
]
deps = [
"//base",
"//ios/web",
"//url",
]
allow_circular_includes_from = [ "//ios/web" ]
}
include_rules = [
"+ios/web/public",
]
// Copyright 2015 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 IOS_PUBLIC_PROVIDER_WEB_WEB_CONTROLLER_PROVIDER_H_
#define IOS_PUBLIC_PROVIDER_WEB_WEB_CONTROLLER_PROVIDER_H_
#include <memory>
// TODO(sdefresne): remove includes of web_controller_provider_factory.h and
// web_state_observer.h once downstream code has been fixed to use the correct
// includes.
#include "ios/public/provider/web/web_controller_provider_factory.h"
#include "ios/web/public/block_types.h"
#include "ios/web/public/web_state/web_state_observer.h"
#include "url/gurl.h"
namespace web {
class BrowserState;
class WebState;
}
namespace ios {
class WebControllerProviderFactory;
// Setter and getter for the provider factory. The provider factory should be
// set early, before any component using WebControllerProviders is called.
void SetWebControllerProviderFactory(
WebControllerProviderFactory* provider_factory);
WebControllerProviderFactory* GetWebControllerProviderFactory();
// Interface that provides URL-loading and JavaScript injection with optional
// dialog suppression.
// TODO(crbug.com/546231): Remove once JS dialog suppression is exposed via
// WebState's public interface.
class WebControllerProvider {
public:
// Constructor for a WebControllerProvider backed by a CRWWebController
// initialized with |browser_state|.
explicit WebControllerProvider(web::BrowserState* browser_state);
virtual ~WebControllerProvider();
// Determines whether JavaScript dialogs are allowed.
virtual bool SuppressesDialogs() const;
virtual void SetSuppressesDialogs(bool should_suppress_dialogs) {}
// Triggers a load of |url|.
virtual void LoadURL(const GURL& url) {}
// Returns the WebState associated with this web controller.
virtual web::WebState* GetWebState() const;
// Injects |script| into the previously loaded page, if any, and calls
// |completion| with the result. Calls |completion| with nil parameters
// when there is no previously loaded page.
virtual void InjectScript(const std::string& script,
web::JavaScriptResultBlock completion);
};
} // namespace ios
#endif // IOS_PUBLIC_PROVIDER_WEB_WEB_CONTROLLER_PROVIDER_H_
// Copyright 2015 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 "ios/public/provider/web/web_controller_provider.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
namespace ios {
WebControllerProvider::WebControllerProvider(web::BrowserState* browser_state) {
}
WebControllerProvider::~WebControllerProvider() {}
bool WebControllerProvider::SuppressesDialogs() const {
return false;
}
web::WebState* WebControllerProvider::GetWebState() const {
return nullptr;
}
void WebControllerProvider::InjectScript(
const std::string& script,
web::JavaScriptResultBlock completion) {
if (completion)
completion(nil, nil);
}
} // namespace ios
// 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 IOS_PUBLIC_PROVIDER_WEB_WEB_CONTROLLER_PROVIDER_FACTORY_H_
#define IOS_PUBLIC_PROVIDER_WEB_WEB_CONTROLLER_PROVIDER_FACTORY_H_
#include <memory>
namespace web {
class BrowserState;
}
namespace ios {
class WebControllerProvider;
// Factory for creation of WebControllerProvider instances.
class WebControllerProviderFactory {
public:
WebControllerProviderFactory();
virtual ~WebControllerProviderFactory();
// Vends WebControllerProviders created using |browser_state|, passing
// ownership to callers.
virtual std::unique_ptr<WebControllerProvider> CreateWebControllerProvider(
web::BrowserState* browser_state);
};
// Setter and getter for the provider factory. The provider factory should be
// set early, before any component using WebControllerProviders is called.
void SetWebControllerProviderFactory(
WebControllerProviderFactory* provider_factory);
WebControllerProviderFactory* GetWebControllerProviderFactory();
} // namespace ios
#endif // IOS_PUBLIC_PROVIDER_WEB_WEB_CONTROLLER_PROVIDER_FACTORY_H_
// 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.
#import "ios/public/provider/web/web_controller_provider_factory.h"
#include "base/memory/ptr_util.h"
#import "ios/public/provider/web/web_controller_provider.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
namespace ios {
namespace {
WebControllerProviderFactory* g_web_controller_provider_factory;
}
WebControllerProviderFactory::WebControllerProviderFactory() {}
WebControllerProviderFactory::~WebControllerProviderFactory() {}
std::unique_ptr<WebControllerProvider>
WebControllerProviderFactory::CreateWebControllerProvider(
web::BrowserState* browser_state) {
return base::MakeUnique<WebControllerProvider>(browser_state);
}
void SetWebControllerProviderFactory(
WebControllerProviderFactory* provider_factory) {
g_web_controller_provider_factory = provider_factory;
}
WebControllerProviderFactory* GetWebControllerProviderFactory() {
return g_web_controller_provider_factory;
}
} // namespace ios
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