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

Unified Diff: mojo/shell/application_manager_unittest.cc

Issue 1130353005: Makes content handlers see requestor url (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge to trunk Created 5 years, 7 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
« no previous file with comments | « mojo/shell/application_manager.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/shell/application_manager_unittest.cc
diff --git a/mojo/shell/application_manager_unittest.cc b/mojo/shell/application_manager_unittest.cc
index ef77f2f47220ebb8b22cc554388b1177fdf753b9..d77a9aad84a7dec3aee36b50eadd3a22b8396aff 100644
--- a/mojo/shell/application_manager_unittest.cc
+++ b/mojo/shell/application_manager_unittest.cc
@@ -15,6 +15,7 @@
#include "mojo/public/interfaces/application/service_provider.mojom.h"
#include "mojo/shell/application_loader.h"
#include "mojo/shell/application_manager.h"
+#include "mojo/shell/fetcher.h"
#include "mojo/shell/test.mojom.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -26,6 +27,36 @@ const char kTestURLString[] = "test:testService";
const char kTestAURLString[] = "test:TestA";
const char kTestBURLString[] = "test:TestB";
+const char kTestMimeType[] = "test/mime-type";
+
+class TestMimeTypeFetcher : public Fetcher {
+ public:
+ explicit TestMimeTypeFetcher(const FetchCallback& fetch_callback)
+ : Fetcher(fetch_callback), url_("xxx") {
+ loader_callback_.Run(make_scoped_ptr(this));
+ }
+ ~TestMimeTypeFetcher() override {}
+
+ // Fetcher:
+ const GURL& GetURL() const override { return url_; }
+ GURL GetRedirectURL() const override { return GURL("yyy"); }
+ URLResponsePtr AsURLResponse(base::TaskRunner* task_runner,
+ uint32_t skip) override {
+ return URLResponse::New().Pass();
+ }
+ void AsPath(
+ base::TaskRunner* task_runner,
+ base::Callback<void(const base::FilePath&, bool)> callback) override {}
+ std::string MimeType() override { return kTestMimeType; }
+ bool HasMojoMagic() override { return false; }
+ bool PeekFirstLine(std::string* line) override { return false; }
+
+ private:
+ const GURL url_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestMimeTypeFetcher);
+};
+
struct TestContext {
TestContext() : num_impls(0), num_loader_deletes(0) {}
std::string last_test_string;
@@ -115,6 +146,7 @@ class TestApplicationLoader : public ApplicationLoader,
void set_context(TestContext* context) { context_ = context; }
int num_loads() const { return num_loads_; }
const std::vector<std::string>& GetArgs() const { return test_app_->args(); }
+ const GURL& last_requestor_url() const { return last_requestor_url_; }
private:
// ApplicationLoader implementation.
@@ -127,6 +159,7 @@ class TestApplicationLoader : public ApplicationLoader,
// ApplicationDelegate implementation.
bool ConfigureIncomingConnection(ApplicationConnection* connection) override {
connection->AddService(this);
+ last_requestor_url_ = GURL(connection->GetRemoteApplicationURL());
return true;
}
@@ -139,6 +172,8 @@ class TestApplicationLoader : public ApplicationLoader,
scoped_ptr<ApplicationImpl> test_app_;
TestContext* context_;
int num_loads_;
+ GURL last_requestor_url_;
+
DISALLOW_COPY_AND_ASSIGN(TestApplicationLoader);
};
@@ -393,8 +428,15 @@ class Tester : public ApplicationDelegate,
class TestDelegate : public ApplicationManager::Delegate {
public:
+ TestDelegate() : create_test_fetcher_(false) {}
+ ~TestDelegate() override {}
+
void AddMapping(const GURL& from, const GURL& to) { mappings_[from] = to; }
+ void set_create_test_fetcher(bool create_test_fetcher) {
+ create_test_fetcher_ = create_test_fetcher;
+ }
+
// ApplicationManager::Delegate
GURL ResolveMappings(const GURL& url) override {
auto it = mappings_.find(url);
@@ -412,9 +454,19 @@ class TestDelegate : public ApplicationManager::Delegate {
}
return mapped_url;
}
+ bool CreateFetcher(const GURL& url,
+ const Fetcher::FetchCallback& loader_callback) override {
+ if (!create_test_fetcher_)
+ return false;
+ new TestMimeTypeFetcher(loader_callback);
+ return true;
+ }
private:
std::map<GURL, GURL> mappings_;
+ bool create_test_fetcher_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestDelegate);
};
class ApplicationManagerTest : public testing::Test {
@@ -739,6 +791,34 @@ TEST_F(ApplicationManagerTest, TestEndApplicationClosure) {
EXPECT_TRUE(called);
}
+TEST(ApplicationManagerTest2, ContentHandlerConnectionGetsRequestorURL) {
+ const GURL content_handler_url("http://test.content.handler");
+ const GURL requestor_url("http://requestor.url");
+ TestContext test_context;
+ base::MessageLoop loop;
+ TestDelegate test_delegate;
+ test_delegate.set_create_test_fetcher(true);
+ ApplicationManager application_manager(&test_delegate);
+ application_manager.set_default_loader(nullptr);
+ application_manager.RegisterContentHandler(kTestMimeType,
+ content_handler_url);
+
+ TestApplicationLoader* loader = new TestApplicationLoader;
+ loader->set_context(&test_context);
+ application_manager.SetLoaderForURL(scoped_ptr<ApplicationLoader>(loader),
+ content_handler_url);
+
+ bool called = false;
+ application_manager.ConnectToApplication(
+ GURL("test:test"), requestor_url, nullptr, nullptr,
+ base::Bind(&QuitClosure, base::Unretained(&called)));
+ loop.Run();
+ EXPECT_TRUE(called);
+
+ ASSERT_EQ(1, loader->num_loads());
+ EXPECT_EQ(requestor_url, loader->last_requestor_url());
+}
+
} // namespace
} // namespace shell
} // namespace mojo
« no previous file with comments | « mojo/shell/application_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698