Commit 1decfe8a authored by Istiaque Ahmed's avatar Istiaque Ahmed Committed by Commit Bot

[Extensions] Speculative fix for DnsApiTest.ResolveHostname

This CL makes the test load an actual extension from test dir instead
of just creating a test extension object that is not loaded in
extension system.

The test flakily fails because the first call to
network::BlockingDnsLookup doesn't resolve dns lookup. This CL is
based on the wild intuition that as we use the extension's url in
NetworkIsolationKey and the extension is not present in extension
system, the test fails. Therefore, loading the extension would
remove the failure cause. Two thousand runs with this fix survives
in bots, where the test wouldn't without this CL.

Bug: 1064832
Change-Id: Id75af472f9457b1205f1caef34b4e6686bbcaeee
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2121344
Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org>
Reviewed-by: default avatarDevlin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#753533}
parent 14c79283
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "extensions/common/extension.h" #include "extensions/common/extension.h"
#include "extensions/common/extension_builder.h" #include "extensions/common/extension_builder.h"
#include "extensions/shell/test/shell_apitest.h" #include "extensions/shell/test/shell_apitest.h"
#include "extensions/test/result_catcher.h"
#include "net/base/features.h" #include "net/base/features.h"
#include "net/base/host_port_pair.h" #include "net/base/host_port_pair.h"
#include "net/base/net_errors.h" #include "net/base/net_errors.h"
...@@ -76,16 +77,16 @@ IN_PROC_BROWSER_TEST_F(DnsApiTest, DnsResolveIPLiteral) { ...@@ -76,16 +77,16 @@ IN_PROC_BROWSER_TEST_F(DnsApiTest, DnsResolveIPLiteral) {
} }
IN_PROC_BROWSER_TEST_F(DnsApiTest, DnsResolveHostname) { IN_PROC_BROWSER_TEST_F(DnsApiTest, DnsResolveHostname) {
scoped_refptr<DnsResolveFunction> resolve_function(new DnsResolveFunction()); ResultCatcher catcher;
scoped_refptr<const Extension> empty_extension = const Extension* extension = LoadExtension("extension");
ExtensionBuilder("Test").Build(); ASSERT_TRUE(extension);
ASSERT_TRUE(catcher.GetNextResult());
resolve_function->set_extension(empty_extension.get()); auto resolve_function = base::MakeRefCounted<DnsResolveFunction>();
resolve_function->set_extension(extension);
resolve_function->set_has_callback(true); resolve_function->set_has_callback(true);
std::string function_arguments("[\""); std::string function_arguments = base::StringPrintf(R"(["%s"])", kHostname);
function_arguments += kHostname;
function_arguments += "\"]";
std::unique_ptr<base::Value> result(RunFunctionAndReturnSingleResult( std::unique_ptr<base::Value> result(RunFunctionAndReturnSingleResult(
resolve_function.get(), function_arguments, browser_context())); resolve_function.get(), function_arguments, browser_context()));
base::DictionaryValue* dict = NULL; base::DictionaryValue* dict = NULL;
...@@ -109,7 +110,7 @@ IN_PROC_BROWSER_TEST_F(DnsApiTest, DnsResolveHostname) { ...@@ -109,7 +110,7 @@ IN_PROC_BROWSER_TEST_F(DnsApiTest, DnsResolveHostname) {
network::mojom::ResolveHostParameters::New(); network::mojom::ResolveHostParameters::New();
// Cache only lookup. // Cache only lookup.
params->source = net::HostResolverSource::LOCAL_ONLY; params->source = net::HostResolverSource::LOCAL_ONLY;
url::Origin origin = url::Origin::Create(empty_extension->url()); url::Origin origin = url::Origin::Create(extension->url());
net::NetworkIsolationKey network_isolation_key(origin, origin); net::NetworkIsolationKey network_isolation_key(origin, origin);
network::DnsLookupResult result1 = network::DnsLookupResult result1 =
network::BlockingDnsLookup(network_context, host_port_pair, network::BlockingDnsLookup(network_context, host_port_pair,
......
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