Synchronize shared state in EmbeddedTestServer callbacks
EmbeddedTestServer callbacks run on a background thread, so shared state
should be synchronized.
Bug: 965724, 965726
Change-Id: I10503dd76f1def680e0c0d944149632a8dbaedea
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1662530
Commit-Queue: Ćukasz Anforowicz <[email protected]>
Auto-Submit: David Benjamin <[email protected]>
Reviewed-by: Nasko Oskov <[email protected]>
Cr-Commit-Position: refs/heads/master@{#670698}
diff --git a/content/browser/network_service_restart_browsertest.cc b/content/browser/network_service_restart_browsertest.cc
index 2aca979f..59ba0a17 100644
--- a/content/browser/network_service_restart_browsertest.cc
+++ b/content/browser/network_service_restart_browsertest.cc
@@ -5,9 +5,11 @@
#include "base/bind.h"
#include "base/callback.h"
#include "base/run_loop.h"
+#include "base/synchronization/lock.h"
#include "base/test/bind_test_util.h"
#include "base/test/scoped_feature_list.h"
#include "base/test/test_timeouts.h"
+#include "base/thread_annotations.h"
#include "base/threading/thread_restrictions.h"
#include "build/build_config.h"
#include "content/browser/frame_host/render_frame_host_impl.h"
@@ -289,15 +291,18 @@
// Called by |embedded_test_server()|.
void MonitorRequest(const net::test_server::HttpRequest& request) {
+ base::AutoLock lock(last_request_lock_);
last_request_relative_url_ = request.relative_url;
}
std::string last_request_relative_url() const {
+ base::AutoLock lock(last_request_lock_);
return last_request_relative_url_;
}
private:
- std::string last_request_relative_url_;
+ mutable base::Lock last_request_lock_;
+ std::string last_request_relative_url_ GUARDED_BY(last_request_lock_);
base::test::ScopedFeatureList scoped_feature_list_;
DISALLOW_COPY_AND_ASSIGN(NetworkServiceRestartBrowserTest);