Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(268)

Unified Diff: trunk/src/content/browser/webui/web_ui_mojo_browsertest.cc

Issue 208263008: Revert 258763 "Adds plumbing to pass WebUI mojo::Handle from bro..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: trunk/src/content/browser/webui/web_ui_mojo_browsertest.cc
===================================================================
--- trunk/src/content/browser/webui/web_ui_mojo_browsertest.cc (revision 258768)
+++ trunk/src/content/browser/webui/web_ui_mojo_browsertest.cc (working copy)
@@ -1,181 +0,0 @@
-// 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/command_line.h"
-#include "base/file_util.h"
-#include "base/files/file_path.h"
-#include "base/path_service.h"
-#include "base/run_loop.h"
-#include "base/strings/string_util.h"
-#include "content/browser/webui/web_ui_controller_factory_registry.h"
-#include "content/common/mojo/mojo_channel_init.h"
-#include "content/public/browser/browser_context.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/browser/web_ui_controller.h"
-#include "content/public/browser/web_ui_data_source.h"
-#include "content/public/common/content_paths.h"
-#include "content/public/common/content_switches.h"
-#include "content/public/common/url_utils.h"
-#include "content/test/content_browser_test.h"
-#include "content/test/content_browser_test_utils.h"
-#include "content/test/data/web_ui_test_mojo_bindings.mojom.h"
-#include "grit/content_resources.h"
-#include "mojo/public/bindings/js/constants.h"
-#include "mojo/public/bindings/remote_ptr.h"
-
-namespace content {
-namespace {
-
-bool got_message = false;
-
-// The bindings for the page are generated from a .mojom file. This code looks
-// up the generated file from disk and returns it.
-bool GetResource(const std::string& id,
- const WebUIDataSource::GotDataCallback& callback) {
- // These are handled by the WebUIDataSource that AddMojoDataSource() creates.
- if (id == mojo::kCodecModuleName || id == mojo::kConnectorModuleName)
- return false;
-
- std::string binding_path = "gen/" + id + ".js";
-#if defined(OS_WIN)
- std::string tmp;
- base::ReplaceChars(binding_path, "//", "\\", &tmp);
- binding_path.swap(tmp);
-#endif
- base::FilePath file_path;
- PathService::Get(CHILD_PROCESS_EXE, &file_path);
- file_path = file_path.DirName().AppendASCII(binding_path);
- std::string contents;
- CHECK(base::ReadFileToString(file_path, &contents, std::string::npos));
- base::RefCountedString* ref_contents = new base::RefCountedString;
- ref_contents->data() = contents;
- callback.Run(ref_contents);
- return true;
-}
-
-// BrowserTarget implementation that quits a RunLoop when BrowserTarget::Test()
-// is called.
-class BrowserTargetImpl : public mojo::BrowserTarget {
- public:
- BrowserTargetImpl(mojo::ScopedRendererTargetHandle handle,
- base::RunLoop* run_loop)
- : client_(handle.Pass(), this),
- run_loop_(run_loop) {
- client_->Test();
- }
- virtual ~BrowserTargetImpl() {}
-
- // mojo::BrowserTarget overrides:
- virtual void Test() OVERRIDE {
- got_message = true;
- run_loop_->Quit();
- }
-
- private:
- mojo::RemotePtr<mojo::RendererTarget> client_;
-
- base::RunLoop* run_loop_;
-
- DISALLOW_COPY_AND_ASSIGN(BrowserTargetImpl);
-};
-
-// WebUIController that sets up mojo bindings. Additionally it creates the
-// BrowserTarget implementation at the right time.
-class TestWebUIController : public WebUIController {
- public:
- explicit TestWebUIController(WebUI* web_ui, base::RunLoop* run_loop)
- : WebUIController(web_ui),
- run_loop_(run_loop) {
- content::WebUIDataSource* data_source =
- WebUIDataSource::AddMojoDataSource(
- web_ui->GetWebContents()->GetBrowserContext());
- data_source->SetRequestFilter(base::Bind(&GetResource));
- }
-
- // WebUIController overrides:
- virtual void RenderViewCreated(RenderViewHost* render_view_host) OVERRIDE {
- mojo::InterfacePipe<mojo::BrowserTarget, mojo::RendererTarget> pipe;
- browser_target_.reset(
- new BrowserTargetImpl(pipe.handle_to_peer.Pass(), run_loop_));
- render_view_host->SetWebUIHandle(
- mojo::ScopedMessagePipeHandle(pipe.handle_to_self.release()));
- }
-
- private:
- base::RunLoop* run_loop_;
-
- scoped_ptr<BrowserTargetImpl> browser_target_;
-
- DISALLOW_COPY_AND_ASSIGN(TestWebUIController);
-};
-
-// WebUIControllerFactory that creates TestWebUIController.
-class TestWebUIControllerFactory : public WebUIControllerFactory {
- public:
- TestWebUIControllerFactory() : run_loop_(NULL) {}
-
- void set_run_loop(base::RunLoop* run_loop) { run_loop_ = run_loop; }
-
- virtual WebUIController* CreateWebUIControllerForURL(
- WebUI* web_ui, const GURL& url) const OVERRIDE {
- return new TestWebUIController(web_ui, run_loop_);
- }
- virtual WebUI::TypeID GetWebUIType(BrowserContext* browser_context,
- const GURL& url) const OVERRIDE {
- return reinterpret_cast<WebUI::TypeID>(1);
- }
- virtual bool UseWebUIForURL(BrowserContext* browser_context,
- const GURL& url) const OVERRIDE {
- return true;
- }
- virtual bool UseWebUIBindingsForURL(BrowserContext* browser_context,
- const GURL& url) const OVERRIDE {
- return true;
- }
-
- private:
- base::RunLoop* run_loop_;
-
- DISALLOW_COPY_AND_ASSIGN(TestWebUIControllerFactory);
-};
-
-class WebUIMojoTest : public ContentBrowserTest {
- public:
- WebUIMojoTest() {
- MojoChannelInit::InitMojo();
- WebUIControllerFactory::RegisterFactory(&factory_);
- }
-
- virtual ~WebUIMojoTest() {
- WebUIControllerFactory::UnregisterFactoryForTesting(&factory_);
- }
-
- TestWebUIControllerFactory* factory() { return &factory_; }
-
- private:
- TestWebUIControllerFactory factory_;
-
- DISALLOW_COPY_AND_ASSIGN(WebUIMojoTest);
-};
-
-// TODO(sky): this is temporarily disabled as it depends upon generating files
-// (the js bindings). Once we move to isolates it can be enabled.
-
-// Loads a webui page that contains mojo bindings and verifies a message makes
-// it from the browser to the page and back.
-IN_PROC_BROWSER_TEST_F(WebUIMojoTest, EndToEnd) {
- got_message = false;
- ASSERT_TRUE(test_server()->Start());
- base::RunLoop run_loop;
- factory()->set_run_loop(&run_loop);
- GURL test_url(test_server()->GetURL("files/web_ui_mojo.html"));
- NavigateToURL(shell(), test_url);
- // RunLoop is quit when message received from page.
- run_loop.Run();
- EXPECT_TRUE(got_message);
-}
-
-} // namespace
-} // namespace content
« no previous file with comments | « trunk/src/content/browser/webui/web_ui_data_source_impl.cc ('k') | trunk/src/content/common/mojo/mojo_channel_init.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698