| // 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 <string> |
| |
| #include "chrome/browser/ui/browser.h" |
| #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| #include "chrome/common/url_constants.h" |
| #include "chrome/test/base/in_process_browser_test.h" |
| #include "chrome/test/base/ui_test_utils.h" |
| #include "content/public/browser/web_contents.h" |
| #include "content/public/browser/web_ui.h" |
| #include "content/public/browser/web_ui_message_handler.h" |
| #include "content/public/common/url_constants.h" |
| #include "url/gurl.h" |
| |
| typedef InProcessBrowserTest MdSettingsUITest; |
| |
| using ui_test_utils::NavigateToURL; |
| |
| IN_PROC_BROWSER_TEST_F(MdSettingsUITest, ViewSourceDoesntCrash) { |
| NavigateToURL(browser(), |
| GURL(content::kViewSourceScheme + std::string(":") + |
| chrome::kChromeUISettingsURL + std::string("strings.js"))); |
| } |
| |
| // Catch lifetime issues in message handlers. There was previously a problem |
| // with PrefMember calling Init again after Destroy. |
| IN_PROC_BROWSER_TEST_F(MdSettingsUITest, ToggleJavaScript) { |
| NavigateToURL(browser(), GURL(chrome::kChromeUISettingsURL)); |
| |
| const auto& handlers = *browser() |
| ->tab_strip_model() |
| ->GetActiveWebContents() |
| ->GetWebUI() |
| ->GetHandlersForTesting(); |
| |
| for (const std::unique_ptr<content::WebUIMessageHandler>& handler : |
| handlers) { |
| handler->AllowJavascriptForTesting(); |
| handler->DisallowJavascript(); |
| handler->AllowJavascriptForTesting(); |
| } |
| } |