Commit 5baa11b4 authored by wfh@chromium.org's avatar wfh@chromium.org
parent d458808a
...@@ -2019,8 +2019,8 @@ void ChromeContentBrowserClient::AllowCertificateError( ...@@ -2019,8 +2019,8 @@ void ChromeContentBrowserClient::AllowCertificateError(
#endif #endif
// Otherwise, display an SSL blocking page. // Otherwise, display an SSL blocking page.
SSLBlockingPage::Show(tab, cert_error, ssl_info, request_url, overridable, new SSLBlockingPage(tab, cert_error, ssl_info, request_url, overridable,
strict_enforcement, callback); strict_enforcement, callback);
} }
void ChromeContentBrowserClient::SelectClientCertificate( void ChromeContentBrowserClient::SelectClientCertificate(
......
...@@ -311,7 +311,7 @@ SafeBrowsingBlockingPage::SafeBrowsingBlockingPage( ...@@ -311,7 +311,7 @@ SafeBrowsingBlockingPage::SafeBrowsingBlockingPage(
} }
interstitial_page_ = InterstitialPage::Create( interstitial_page_ = InterstitialPage::Create(
web_contents, is_main_frame_load_blocked_, url_, this); web_contents, IsMainPageLoadBlocked(unsafe_resources), url_, this);
} }
bool SafeBrowsingBlockingPage::CanShowMalwareDetailsOption() { bool SafeBrowsingBlockingPage::CanShowMalwareDetailsOption() {
...@@ -871,20 +871,6 @@ SafeBrowsingBlockingPage::UnsafeResourceMap* ...@@ -871,20 +871,6 @@ SafeBrowsingBlockingPage::UnsafeResourceMap*
return g_unsafe_resource_map.Pointer(); return g_unsafe_resource_map.Pointer();
} }
// static
SafeBrowsingBlockingPage* SafeBrowsingBlockingPage::CreateBlockingPage(
SafeBrowsingUIManager* ui_manager,
WebContents* web_contents,
const UnsafeResource& unsafe_resource) {
std::vector<UnsafeResource> resources;
resources.push_back(unsafe_resource);
// Set up the factory if this has not been done already (tests do that
// before this method is called).
if (!factory_)
factory_ = g_safe_browsing_blocking_page_factory_impl.Pointer();
return factory_->CreateSafeBrowsingPage(ui_manager, web_contents, resources);
}
// static // static
void SafeBrowsingBlockingPage::ShowBlockingPage( void SafeBrowsingBlockingPage::ShowBlockingPage(
SafeBrowsingUIManager* ui_manager, SafeBrowsingUIManager* ui_manager,
...@@ -906,8 +892,14 @@ void SafeBrowsingBlockingPage::ShowBlockingPage( ...@@ -906,8 +892,14 @@ void SafeBrowsingBlockingPage::ShowBlockingPage(
if (!interstitial) { if (!interstitial) {
// There are no interstitial currently showing in that tab, go ahead and // There are no interstitial currently showing in that tab, go ahead and
// show this interstitial. // show this interstitial.
std::vector<UnsafeResource> resources;
resources.push_back(unsafe_resource);
// Set up the factory if this has not been done already (tests do that
// before this method is called).
if (!factory_)
factory_ = g_safe_browsing_blocking_page_factory_impl.Pointer();
SafeBrowsingBlockingPage* blocking_page = SafeBrowsingBlockingPage* blocking_page =
CreateBlockingPage(ui_manager, web_contents, unsafe_resource); factory_->CreateSafeBrowsingPage(ui_manager, web_contents, resources);
blocking_page->interstitial_page_->Show(); blocking_page->interstitial_page_->Show();
return; return;
} }
......
...@@ -61,13 +61,6 @@ class SafeBrowsingBlockingPage : public content::InterstitialPageDelegate { ...@@ -61,13 +61,6 @@ class SafeBrowsingBlockingPage : public content::InterstitialPageDelegate {
virtual ~SafeBrowsingBlockingPage(); virtual ~SafeBrowsingBlockingPage();
// Creates a blocking page. Use ShowBlockingPage if you don't need to access
// the blocking page directly.
static SafeBrowsingBlockingPage* CreateBlockingPage(
SafeBrowsingUIManager* ui_manager,
content::WebContents* web_contents,
const UnsafeResource& unsafe_resource);
// Shows a blocking page warning the user about phishing/malware for a // Shows a blocking page warning the user about phishing/malware for a
// specific resource. // specific resource.
// You can call this method several times, if an interstitial is already // You can call this method several times, if an interstitial is already
......
...@@ -362,12 +362,9 @@ SSLBlockingPage::SSLBlockingPage( ...@@ -362,12 +362,9 @@ SSLBlockingPage::SSLBlockingPage(
content::Source<Profile>(profile)); content::Source<Profile>(profile));
#endif #endif
// chrome://interstitials page uses this class without actually creating an
// interstitial so that it can be debugged. Set |create_interstitial| to true
// if the page is going to be used as an actual interstitial and not just part
// of the chrome://interstitials webui.
interstitial_page_ = InterstitialPage::Create( interstitial_page_ = InterstitialPage::Create(
web_contents_, true, request_url, this); web_contents_, true, request_url, this);
interstitial_page_->Show();
} }
SSLBlockingPage::~SSLBlockingPage() { SSLBlockingPage::~SSLBlockingPage() {
...@@ -387,41 +384,6 @@ SSLBlockingPage::~SSLBlockingPage() { ...@@ -387,41 +384,6 @@ SSLBlockingPage::~SSLBlockingPage() {
} }
} }
// static
void SSLBlockingPage::Show(content::WebContents* web_contents,
int cert_error,
const net::SSLInfo& ssl_info,
const GURL& request_url,
bool overridable,
bool strict_enforcement,
const base::Callback<void(bool)>& callback) {
SSLBlockingPage* ssl_blocking_page = new SSLBlockingPage(web_contents,
cert_error,
ssl_info,
request_url,
overridable,
strict_enforcement,
callback);
ssl_blocking_page->interstitial_page_->Show();
}
// static
SSLBlockingPage* SSLBlockingPage::CreateForWebUI(
content::WebContents* web_contents,
int cert_error,
const net::SSLInfo& ssl_info,
const GURL& request_url,
bool overridable,
bool strict_enforcement) {
return new SSLBlockingPage(web_contents,
cert_error,
ssl_info,
request_url,
overridable,
strict_enforcement,
base::Callback<void(bool)>());
}
std::string SSLBlockingPage::GetHTMLContents() { std::string SSLBlockingPage::GetHTMLContents() {
if (trial_condition_ == kCondV1 || trial_condition_ == kCondV1LayoutV2Text) if (trial_condition_ == kCondV1 || trial_condition_ == kCondV1LayoutV2Text)
return GetHTMLContentsV1(); return GetHTMLContentsV1();
......
...@@ -48,29 +48,16 @@ class SSLBlockingPage : public content::InterstitialPageDelegate, ...@@ -48,29 +48,16 @@ class SSLBlockingPage : public content::InterstitialPageDelegate,
CMD_CLOCK = 5 CMD_CLOCK = 5
}; };
SSLBlockingPage(
content::WebContents* web_contents,
int cert_error,
const net::SSLInfo& ssl_info,
const GURL& request_url,
bool overridable,
bool strict_enforcement,
const base::Callback<void(bool)>& callback);
virtual ~SSLBlockingPage(); virtual ~SSLBlockingPage();
// Creates an SSL blocking page and an interstitial for it, and shows the
// interstitial. The interstitial owns the blocking page and is owned by
// |web_contents|.
static void Show(content::WebContents* web_contents,
int cert_error,
const net::SSLInfo& ssl_info,
const GURL& request_url,
bool overridable,
bool strict_enforcement,
const base::Callback<void(bool)>& callback);
// Creates an SSL blocking page and an interstitial for it without
// showing the interstitial. Since the interstitial isn't shown, the caller is
// responsible for cleaning up the blocking page.
static SSLBlockingPage* CreateForWebUI(content::WebContents* web_contents,
int cert_error,
const net::SSLInfo& ssl_info,
const GURL& request_url,
bool overridable,
bool strict_enforcement);
// A method that sets strings in the specified dictionary from the passed // A method that sets strings in the specified dictionary from the passed
// vector so that they can be used to resource the ssl_roadblock.html/ // vector so that they can be used to resource the ssl_roadblock.html/
// ssl_error.html files. // ssl_error.html files.
...@@ -89,15 +76,6 @@ class SSLBlockingPage : public content::InterstitialPageDelegate, ...@@ -89,15 +76,6 @@ class SSLBlockingPage : public content::InterstitialPageDelegate,
virtual void OnDontProceed() OVERRIDE; virtual void OnDontProceed() OVERRIDE;
private: private:
SSLBlockingPage(
content::WebContents* web_contents,
int cert_error,
const net::SSLInfo& ssl_info,
const GURL& request_url,
bool overridable,
bool strict_enforcement,
const base::Callback<void(bool)>& callback);
void NotifyDenyCertificate(); void NotifyDenyCertificate();
void NotifyAllowCertificate(); void NotifyAllowCertificate();
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
#include "chrome/browser/ui/webui/identity_internals_ui.h" #include "chrome/browser/ui/webui/identity_internals_ui.h"
#include "chrome/browser/ui/webui/inspect_ui.h" #include "chrome/browser/ui/webui/inspect_ui.h"
#include "chrome/browser/ui/webui/instant_ui.h" #include "chrome/browser/ui/webui/instant_ui.h"
#include "chrome/browser/ui/webui/interstitials/interstitial_ui.h"
#include "chrome/browser/ui/webui/invalidations_ui.h" #include "chrome/browser/ui/webui/invalidations_ui.h"
#include "chrome/browser/ui/webui/memory_internals/memory_internals_ui.h" #include "chrome/browser/ui/webui/memory_internals/memory_internals_ui.h"
#include "chrome/browser/ui/webui/net_internals/net_internals_ui.h" #include "chrome/browser/ui/webui/net_internals/net_internals_ui.h"
...@@ -291,8 +290,6 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, ...@@ -291,8 +290,6 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
return &NewWebUI<HistoryUI>; return &NewWebUI<HistoryUI>;
if (url.host() == chrome::kChromeUIInstantHost) if (url.host() == chrome::kChromeUIInstantHost)
return &NewWebUI<InstantUI>; return &NewWebUI<InstantUI>;
if (url.host() == chrome::kChromeUIInterstitialHost)
return &NewWebUI<InterstitialUI>;
if (url.host() == chrome::kChromeUIInvalidationsHost) if (url.host() == chrome::kChromeUIInvalidationsHost)
return &NewWebUI<InvalidationsUI>; return &NewWebUI<InvalidationsUI>;
if (url.host() == chrome::kChromeUISupervisedUserPassphrasePageHost) if (url.host() == chrome::kChromeUISupervisedUserPassphrasePageHost)
......
// Copyright 2014 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 "chrome/browser/ui/webui/interstitials/interstitial_ui.h"
#include "base/strings/string_util.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h"
#include "chrome/browser/safe_browsing/safe_browsing_service.h"
#include "chrome/browser/ssl/ssl_blocking_page.h"
#include "chrome/common/url_constants.h"
#include "content/public/browser/interstitial_page_delegate.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_ui.h"
#include "content/public/browser/web_ui_controller.h"
#include "content/public/browser/web_ui_data_source.h"
#include "grit/browser_resources.h"
#include "net/base/net_errors.h"
#include "net/base/url_util.h"
#include "net/cert/x509_certificate.h"
#include "net/ssl/ssl_info.h"
namespace {
class InterstitialHTMLSource : public content::URLDataSource {
public:
InterstitialHTMLSource(Profile* profile,
content::WebContents* web_contents);
virtual ~InterstitialHTMLSource();
// content::URLDataSource:
virtual std::string GetMimeType(const std::string& mime_type) const OVERRIDE;
virtual std::string GetSource() const OVERRIDE;
virtual bool ShouldAddContentSecurityPolicy() const OVERRIDE;
virtual void StartDataRequest(
const std::string& path,
int render_process_id,
int render_frame_id,
const content::URLDataSource::GotDataCallback& callback) OVERRIDE;
private:
Profile* profile_;
content::WebContents* web_contents_;
DISALLOW_COPY_AND_ASSIGN(InterstitialHTMLSource);
};
SSLBlockingPage* CreateSSLBlockingPage(content::WebContents* web_contents) {
// Random parameters for SSL blocking page.
int cert_error = net::ERR_CERT_CONTAINS_ERRORS;
GURL request_url("https://example.com");
bool overridable = false;
bool strict_enforcement = false;
std::string url_param;
if (net::GetValueForKeyInQuery(web_contents->GetURL(),
"url",
&url_param)) {
if (GURL(url_param).is_valid())
request_url = GURL(url_param);
}
std::string overridable_param;
if (net::GetValueForKeyInQuery(web_contents->GetURL(),
"overridable",
&overridable_param)) {
overridable = overridable_param == "1";
}
std::string strict_enforcement_param;
if (net::GetValueForKeyInQuery(web_contents->GetURL(),
"strict_enforcement",
&strict_enforcement_param)) {
strict_enforcement = strict_enforcement_param == "1";
}
net::SSLInfo ssl_info;
ssl_info.cert = new net::X509Certificate(
request_url.host(), "CA", base::Time::Max(), base::Time::Max());
// This delegate doesn't create an interstitial.
return SSLBlockingPage::CreateForWebUI(web_contents, cert_error, ssl_info,
request_url, overridable,
strict_enforcement);
}
SafeBrowsingBlockingPage* CreateSafeBrowsingBlockingPage(
content::WebContents* web_contents) {
SBThreatType threat_type = SB_THREAT_TYPE_URL_MALWARE;
GURL request_url("http://example.com");
std::string url_param;
if (net::GetValueForKeyInQuery(web_contents->GetURL(),
"url",
&url_param)) {
if (GURL(url_param).is_valid())
request_url = GURL(url_param);
}
std::string type_param;
if (net::GetValueForKeyInQuery(web_contents->GetURL(),
"type",
&type_param)) {
if (type_param == "malware") {
threat_type = SB_THREAT_TYPE_URL_MALWARE;
} else if (type_param == "phishing") {
threat_type = SB_THREAT_TYPE_URL_PHISHING;
} else if (type_param == "clientside_malware") {
threat_type = SB_THREAT_TYPE_CLIENT_SIDE_MALWARE_URL;
} else if (type_param == "clientside_phishing") {
threat_type = SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL;
// Interstitials for client side phishing urls load after the page loads
// (see SafeBrowsingBlockingPage::IsMainPageLoadBlocked), so there should
// either be a new navigation entry, or there shouldn't be any pending
// entries. Clear any pending navigation entries.
content::NavigationController* controller =
&web_contents->GetController();
controller->DiscardNonCommittedEntries();
}
}
SafeBrowsingBlockingPage::UnsafeResource resource;
resource.url = request_url;
resource.threat_type = threat_type;
return SafeBrowsingBlockingPage::CreateBlockingPage(
g_browser_process->safe_browsing_service()->ui_manager(),
web_contents,
resource);
}
} // namespace
InterstitialUI::InterstitialUI(content::WebUI* web_ui)
: WebUIController(web_ui) {
Profile* profile = Profile::FromWebUI(web_ui);
scoped_ptr<InterstitialHTMLSource> html_source(
new InterstitialHTMLSource(profile->GetOriginalProfile(),
web_ui->GetWebContents()));
content::URLDataSource::Add(profile, html_source.release());
}
InterstitialUI::~InterstitialUI() {
}
// InterstitialHTMLSource
InterstitialHTMLSource::InterstitialHTMLSource(
Profile* profile,
content::WebContents* web_contents)
: profile_(profile),
web_contents_(web_contents) {
}
InterstitialHTMLSource::~InterstitialHTMLSource() {
}
std::string InterstitialHTMLSource::GetMimeType(
const std::string& mime_type) const {
return "text/html";
}
std::string InterstitialHTMLSource::GetSource() const {
return chrome::kChromeUIInterstitialHost;
}
bool InterstitialHTMLSource::ShouldAddContentSecurityPolicy()
const {
return false;
}
void InterstitialHTMLSource::StartDataRequest(
const std::string& path,
int render_process_id,
int render_frame_id,
const content::URLDataSource::GotDataCallback& callback) {
scoped_ptr<content::InterstitialPageDelegate> interstitial_delegate;
if (StartsWithASCII(path, "ssl", true)) {
interstitial_delegate.reset(CreateSSLBlockingPage(web_contents_));
} else if (StartsWithASCII(path, "safebrowsing", true)) {
interstitial_delegate.reset(CreateSafeBrowsingBlockingPage(web_contents_));
}
std::string html;
if (interstitial_delegate.get()) {
html = interstitial_delegate.get()->GetHTMLContents();
} else {
html = "<html><head><title>Interstitials</title></head>"
"<body><h2>Choose an interstitial<h2>"
"<h3>SSL</h3>"
"<a href='ssl'>example.com</a><br>"
"<a href='ssl?url=https://google.com'>SSL (google.com)</a><br>"
"<a href='ssl?overridable=1&strict_enforcement=0'>"
" example.com (Overridable)</a>"
"<br><br>"
"<h3>SafeBrowsing</h3>"
"<a href='safebrowsing?type=malware'>Malware</a><br>"
"<a href='safebrowsing?type=phishing'>Phishing</a><br>"
"<a href='safebrowsing?type=clientside_malware'>"
" Client Side Malware</a><br>"
"<a href='safebrowsing?type=clientside_phishing'>"
" Client Side Phishing</a><br>"
"</body></html>";
}
scoped_refptr<base::RefCountedString> html_bytes = new base::RefCountedString;
html_bytes->data().assign(html.begin(), html.end());
callback.Run(html_bytes.get());
}
// Copyright 2014 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 CHROME_BROWSER_UI_WEBUI_INTERSTITIALS_INTERSTITIAL_UI_H_
#define CHROME_BROWSER_UI_WEBUI_INTERSTITIALS_INTERSTITIAL_UI_H_
#include <string>
#include "content/public/browser/url_data_source.h"
#include "content/public/browser/web_ui_controller.h"
class Profile;
namespace content {
class WebContents;
}
class InterstitialUI : public content::WebUIController {
public:
explicit InterstitialUI(content::WebUI* web_ui);
virtual ~InterstitialUI();
private:
DISALLOW_COPY_AND_ASSIGN(InterstitialUI);
};
#endif // CHROME_BROWSER_UI_WEBUI_INTERSTITIALS_INTERSTITIAL_UI_H_
// Copyright 2014 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 "base/strings/utf_string_conversions.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/devtools/devtools_window.h"
#include "chrome/browser/devtools/devtools_window_testing.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
#include "content/public/browser/devtools_manager.h"
#include "content/public/browser/web_contents.h"
class InterstitialUITest : public InProcessBrowserTest {
public:
InterstitialUITest() {}
virtual ~InterstitialUITest() {}
protected:
void TestInterstitial(GURL url, const std::string& page_title) {
ui_test_utils::NavigateToURL(browser(), url);
EXPECT_EQ(
base::ASCIIToUTF16(page_title),
browser()->tab_strip_model()->GetActiveWebContents()->GetTitle());
// Should also be able to open and close devtools.
DevToolsWindow* window =
DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), true);
EXPECT_TRUE(window);
DevToolsWindowTesting::CloseDevToolsWindowSync(window);
}
};
IN_PROC_BROWSER_TEST_F(InterstitialUITest, OpenInterstitial) {
TestInterstitial(
GURL("chrome://interstitials"),
"Interstitials");
// Invalid path should open the main page:
TestInterstitial(
GURL("chrome://interstitials/--invalid--"),
"Interstitials");
TestInterstitial(
GURL("chrome://interstitials/ssl"),
"Privacy error");
TestInterstitial(
GURL("chrome://interstitials/safebrowsing?type=malware"),
"Security error");
TestInterstitial(
GURL("chrome://interstitials/safebrowsing?type=phishing"),
"Security error");
TestInterstitial(
GURL("chrome://interstitials/safebrowsing?type=clientside_malware"),
"Security error");
TestInterstitial(
GURL("chrome://interstitials/safebrowsing?type=clientside_phishing"),
"Security error");
}
...@@ -1058,8 +1058,6 @@ ...@@ -1058,8 +1058,6 @@
'browser/ui/webui/history_ui.h', 'browser/ui/webui/history_ui.h',
'browser/ui/webui/instant_ui.cc', 'browser/ui/webui/instant_ui.cc',
'browser/ui/webui/instant_ui.h', 'browser/ui/webui/instant_ui.h',
'browser/ui/webui/interstitials/interstitial_ui.cc',
'browser/ui/webui/interstitials/interstitial_ui.h',
'browser/ui/webui/invalidations_message_handler.cc', 'browser/ui/webui/invalidations_message_handler.cc',
'browser/ui/webui/invalidations_message_handler.h', 'browser/ui/webui/invalidations_message_handler.h',
'browser/ui/webui/invalidations_ui.cc', 'browser/ui/webui/invalidations_ui.cc',
......
...@@ -1472,7 +1472,6 @@ ...@@ -1472,7 +1472,6 @@
'browser/ui/webui/identity_internals_ui_browsertest.h', 'browser/ui/webui/identity_internals_ui_browsertest.h',
'browser/ui/webui/identity_internals_ui_browsertest.js', 'browser/ui/webui/identity_internals_ui_browsertest.js',
'browser/ui/webui/inspect_ui_browsertest.cc', 'browser/ui/webui/inspect_ui_browsertest.cc',
'browser/ui/webui/interstitials/interstitial_ui_browsertest.cc',
'browser/ui/webui/net_internals/net_internals_ui_browsertest.cc', 'browser/ui/webui/net_internals/net_internals_ui_browsertest.cc',
'browser/ui/webui/net_internals/net_internals_ui_browsertest.h', 'browser/ui/webui/net_internals/net_internals_ui_browsertest.h',
'browser/ui/webui/ntp/most_visited_browsertest.cc', 'browser/ui/webui/ntp/most_visited_browsertest.cc',
......
...@@ -58,7 +58,6 @@ const char kChromeUIHistoryFrameURL[] = "chrome://history-frame/"; ...@@ -58,7 +58,6 @@ const char kChromeUIHistoryFrameURL[] = "chrome://history-frame/";
const char kChromeUIIdentityInternalsURL[] = "chrome://identity-internals/"; const char kChromeUIIdentityInternalsURL[] = "chrome://identity-internals/";
const char kChromeUIInspectURL[] = "chrome://inspect/"; const char kChromeUIInspectURL[] = "chrome://inspect/";
const char kChromeUIInstantURL[] = "chrome://instant/"; const char kChromeUIInstantURL[] = "chrome://instant/";
const char kChromeUIInterstitialURL[] = "chrome://interstitials/";
const char kChromeUIInvalidationsURL[] = "chrome://invalidations/"; const char kChromeUIInvalidationsURL[] = "chrome://invalidations/";
const char kChromeUIIPCURL[] = "chrome://ipc/"; const char kChromeUIIPCURL[] = "chrome://ipc/";
const char kChromeUIMemoryRedirectURL[] = "chrome://memory-redirect/"; const char kChromeUIMemoryRedirectURL[] = "chrome://memory-redirect/";
...@@ -198,7 +197,6 @@ const char kChromeUIHistoryFrameHost[] = "history-frame"; ...@@ -198,7 +197,6 @@ const char kChromeUIHistoryFrameHost[] = "history-frame";
const char kChromeUIIdentityInternalsHost[] = "identity-internals"; const char kChromeUIIdentityInternalsHost[] = "identity-internals";
const char kChromeUIInspectHost[] = "inspect"; const char kChromeUIInspectHost[] = "inspect";
const char kChromeUIInstantHost[] = "instant"; const char kChromeUIInstantHost[] = "instant";
const char kChromeUIInterstitialHost[] = "interstitials";
const char kChromeUIInvalidationsHost[] = "invalidations"; const char kChromeUIInvalidationsHost[] = "invalidations";
const char kChromeUIIPCHost[] = "ipc"; const char kChromeUIIPCHost[] = "ipc";
const char kChromeUIKillHost[] = "kill"; const char kChromeUIKillHost[] = "kill";
......
...@@ -52,7 +52,6 @@ extern const char kChromeUIHistoryFrameURL[]; ...@@ -52,7 +52,6 @@ extern const char kChromeUIHistoryFrameURL[];
extern const char kChromeUIIdentityInternalsURL[]; extern const char kChromeUIIdentityInternalsURL[];
extern const char kChromeUIInspectURL[]; extern const char kChromeUIInspectURL[];
extern const char kChromeUIInstantURL[]; extern const char kChromeUIInstantURL[];
extern const char kChromeUIInterstitialURL[];
extern const char kChromeUIInvalidationsURL[]; extern const char kChromeUIInvalidationsURL[];
extern const char kChromeUIIPCURL[]; extern const char kChromeUIIPCURL[];
extern const char kChromeUIMemoryRedirectURL[]; extern const char kChromeUIMemoryRedirectURL[];
...@@ -187,7 +186,6 @@ extern const char kChromeUIHistoryFrameHost[]; ...@@ -187,7 +186,6 @@ extern const char kChromeUIHistoryFrameHost[];
extern const char kChromeUIIdentityInternalsHost[]; extern const char kChromeUIIdentityInternalsHost[];
extern const char kChromeUIInspectHost[]; extern const char kChromeUIInspectHost[];
extern const char kChromeUIInstantHost[]; extern const char kChromeUIInstantHost[];
extern const char kChromeUIInterstitialHost[];
extern const char kChromeUIInvalidationsHost[]; extern const char kChromeUIInvalidationsHost[];
extern const char kChromeUIIPCHost[]; extern const char kChromeUIIPCHost[];
extern const char kChromeUIKillHost[]; extern const char kChromeUIKillHost[];
......
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