diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/chrome/browser/devtools | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-85-based.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/chrome/browser/devtools')
22 files changed, 150 insertions, 108 deletions
diff --git a/chromium/chrome/browser/devtools/BUILD.gn b/chromium/chrome/browser/devtools/BUILD.gn index e094572221e..7a6188b2df4 100644 --- a/chromium/chrome/browser/devtools/BUILD.gn +++ b/chromium/chrome/browser/devtools/BUILD.gn @@ -92,6 +92,15 @@ static_library("devtools") { deps = [ "//base", + + # To prevent circular GN dependencies, this target does not depend on + # //chrome/browser:browser, even though it has a real build dependency on + # it. However, depending on the order in which this target and + # //chrome/browser:browser are built it's possible that the connectors + # proto header (which //chrome/browser:browser depends on) is not generated + # yet causing devtools not to compile. Adding this indirect dependency to + # the proto to fix that. + "//components/enterprise/common/proto:connectors_proto", "//content/public/browser", "//net", "//services/viz/privileged/mojom/compositing", diff --git a/chromium/chrome/browser/devtools/device/adb/adb_client_socket_browsertest.cc b/chromium/chrome/browser/devtools/device/adb/adb_client_socket_browsertest.cc index c0bcc02d0c2..b425918e39d 100644 --- a/chromium/chrome/browser/devtools/device/adb/adb_client_socket_browsertest.cc +++ b/chromium/chrome/browser/devtools/device/adb/adb_client_socket_browsertest.cc @@ -3,7 +3,6 @@ // found in the LICENSE file. #include "base/run_loop.h" -#include "base/logging.h" #include "chrome/browser/devtools/device/adb/adb_device_provider.h" #include "chrome/browser/devtools/device/adb/mock_adb_server.h" #include "chrome/browser/devtools/device/devtools_android_bridge.h" diff --git a/chromium/chrome/browser/devtools/device/adb/mock_adb_server.cc b/chromium/chrome/browser/devtools/device/adb/mock_adb_server.cc index 816aebdd877..489f125562d 100644 --- a/chromium/chrome/browser/devtools/device/adb/mock_adb_server.cc +++ b/chromium/chrome/browser/devtools/device/adb/mock_adb_server.cc @@ -18,7 +18,6 @@ #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" -#include "base/task/post_task.h" #include "base/threading/thread_task_runner_handle.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" @@ -651,17 +650,16 @@ void MockAndroidConnection::SendHTTPResponse(const std::string& body) { void StartMockAdbServer(FlushMode flush_mode) { base::RunLoop run_loop; - base::PostTaskAndReply( - FROM_HERE, {BrowserThread::IO}, - base::BindOnce(&StartMockAdbServerOnIOThread, flush_mode), + content::GetIOThreadTaskRunner({})->PostTaskAndReply( + FROM_HERE, base::BindOnce(&StartMockAdbServerOnIOThread, flush_mode), run_loop.QuitClosure()); run_loop.Run(); } void StopMockAdbServer() { base::RunLoop run_loop; - base::PostTaskAndReply(FROM_HERE, {BrowserThread::IO}, - base::BindOnce(&StopMockAdbServerOnIOThread), - run_loop.QuitClosure()); + content::GetIOThreadTaskRunner({})->PostTaskAndReply( + FROM_HERE, base::BindOnce(&StopMockAdbServerOnIOThread), + run_loop.QuitClosure()); run_loop.Run(); } diff --git a/chromium/chrome/browser/devtools/device/android_device_manager.cc b/chromium/chrome/browser/devtools/device/android_device_manager.cc index 02a50e12c56..e3716a6f5da 100644 --- a/chromium/chrome/browser/devtools/device/android_device_manager.cc +++ b/chromium/chrome/browser/devtools/device/android_device_manager.cc @@ -17,7 +17,6 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" -#include "base/task/post_task.h" #include "base/task/thread_pool.h" #include "base/threading/thread.h" #include "base/threading/thread_task_runner_handle.h" @@ -382,8 +381,8 @@ class DevicesRequest : public base::RefCountedThreadSafe<DevicesRequest> { void OnCountDevices(const base::Callback<void(int)>& callback, int device_count) { - base::PostTask(FROM_HERE, {BrowserThread::UI}, - base::BindOnce(callback, device_count)); + content::GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(callback, device_count)); } } // namespace diff --git a/chromium/chrome/browser/devtools/device/cast_device_provider.cc b/chromium/chrome/browser/devtools/device/cast_device_provider.cc index 8cae795aa7e..553d95dab45 100644 --- a/chromium/chrome/browser/devtools/device/cast_device_provider.cc +++ b/chromium/chrome/browser/devtools/device/cast_device_provider.cc @@ -14,7 +14,6 @@ #include "base/single_thread_task_runner.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_split.h" -#include "base/task/post_task.h" #include "base/threading/thread_task_runner_handle.h" #include "chrome/browser/local_discovery/service_discovery_shared_client.h" #include "content/public/browser/browser_task_traits.h" @@ -156,8 +155,8 @@ void CastDeviceProvider::QueryDevices(const SerialsCallback& callback) { if (!lister_delegate_) { lister_delegate_.reset(new DeviceListerDelegate( weak_factory_.GetWeakPtr(), base::ThreadTaskRunnerHandle::Get())); - base::PostTask(FROM_HERE, {content::BrowserThread::UI}, - base::BindOnce(&DeviceListerDelegate::StartDiscovery, + content::GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&DeviceListerDelegate::StartDiscovery, lister_delegate_->AsWeakPtr())); } std::set<net::HostPortPair> targets; diff --git a/chromium/chrome/browser/devtools/device/devtools_device_discovery.cc b/chromium/chrome/browser/devtools/device/devtools_device_discovery.cc index 952af2c6614..bd3cefdedef 100644 --- a/chromium/chrome/browser/devtools/device/devtools_device_discovery.cc +++ b/chromium/chrome/browser/devtools/device/devtools_device_discovery.cc @@ -16,7 +16,6 @@ #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" -#include "base/task/post_task.h" #include "base/values.h" #include "chrome/browser/devtools/devtools_window.h" #include "content/public/browser/browser_task_traits.h" @@ -46,8 +45,8 @@ const char kPageReloadCommand[] = "{'method': 'Page.reload', id: 1}"; const char kWebViewSocketPrefix[] = "webview_devtools_remote"; static void ScheduleTaskDefault(const base::Closure& task) { - base::PostDelayedTask(FROM_HERE, {BrowserThread::UI}, task, - base::TimeDelta::FromMilliseconds(kPollingIntervalMs)); + content::GetUIThreadTaskRunner({})->PostDelayedTask( + FROM_HERE, task, base::TimeDelta::FromMilliseconds(kPollingIntervalMs)); } // ProtocolCommand ------------------------------------------------------------ diff --git a/chromium/chrome/browser/devtools/device/port_forwarding_controller.cc b/chromium/chrome/browser/devtools/device/port_forwarding_controller.cc index 65421861737..3b54c9d9c5c 100644 --- a/chromium/chrome/browser/devtools/device/port_forwarding_controller.cc +++ b/chromium/chrome/browser/devtools/device/port_forwarding_controller.cc @@ -17,7 +17,6 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" -#include "base/task/post_task.h" #include "base/threading/thread_checker.h" #include "base/threading/thread_task_runner_handle.h" #include "chrome/browser/profiles/profile.h" @@ -236,8 +235,8 @@ class SocketTunnel { adb_thread_runner_(base::ThreadTaskRunnerHandle::Get()) { ResolveHostCallback resolve_host_callback = base::BindOnce( &SocketTunnel::OnResolveHostComplete, base::Unretained(this)); - base::PostTask(FROM_HERE, {content::BrowserThread::UI}, - base::BindOnce(&ResolveHost, profile, host, port, + content::GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&ResolveHost, profile, host, port, std::move(resolve_host_callback))); } @@ -495,9 +494,6 @@ void PortForwardingController::Connection::SendCommand( pending_responses_[id] = base::Bind(&Connection::ProcessBindResponse, base::Unretained(this), port); -#if BUILDFLAG(DEBUG_DEVTOOLS) - port_status_[port] = kStatusConnecting; -#endif // BUILDFLAG(DEBUG_DEVTOOLS) } else { auto it = port_status_.find(port); if (it != port_status_.end() && it->second == kStatusError) { @@ -509,9 +505,6 @@ void PortForwardingController::Connection::SendCommand( pending_responses_[id] = base::Bind(&Connection::ProcessUnbindResponse, base::Unretained(this), port); -#if BUILDFLAG(DEBUG_DEVTOOLS) - port_status_[port] = kStatusDisconnecting; -#endif // BUILDFLAG(DEBUG_DEVTOOLS) } web_socket_->SendFrame(SerializeCommand(id, method, std::move(params))); diff --git a/chromium/chrome/browser/devtools/device/tcp_device_provider.cc b/chromium/chrome/browser/devtools/device/tcp_device_provider.cc index 52c3216c503..d1634123e61 100644 --- a/chromium/chrome/browser/devtools/device/tcp_device_provider.cc +++ b/chromium/chrome/browser/devtools/device/tcp_device_provider.cc @@ -12,12 +12,12 @@ #include "base/single_thread_task_runner.h" #include "base/stl_util.h" #include "base/strings/string_number_conversions.h" -#include "base/task/post_task.h" #include "base/threading/thread_task_runner_handle.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/devtools/device/adb/adb_client_socket.h" #include "chrome/browser/net/system_network_context_manager.h" #include "content/public/browser/browser_task_traits.h" +#include "content/public/browser/browser_thread.h" #include "mojo/public/cpp/bindings/receiver.h" #include "net/base/completion_repeating_callback.h" #include "net/base/net_errors.h" @@ -47,8 +47,8 @@ class ResolveHostAndOpenSocket final : public network::ResolveHostClientBase { const AdbClientSocket::SocketCallback& callback) : callback_(callback) { mojo::Remote<network::mojom::HostResolver> resolver; - base::PostTask(FROM_HERE, {content::BrowserThread::UI}, - base::BindOnce( + content::GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce( [](mojo::PendingReceiver<network::mojom::HostResolver> pending_receiver) { g_browser_process->system_network_context_manager() diff --git a/chromium/chrome/browser/devtools/device/usb/android_usb_browsertest.cc b/chromium/chrome/browser/devtools/device/usb/android_usb_browsertest.cc index 6d38d17048b..f5bede887f1 100644 --- a/chromium/chrome/browser/devtools/device/usb/android_usb_browsertest.cc +++ b/chromium/chrome/browser/devtools/device/usb/android_usb_browsertest.cc @@ -17,7 +17,6 @@ #include "base/run_loop.h" #include "base/single_thread_task_runner.h" #include "base/strings/utf_string_conversions.h" -#include "base/task/post_task.h" #include "base/threading/thread_task_runner_handle.h" #include "chrome/browser/devtools/device/adb/mock_adb_server.h" #include "chrome/browser/devtools/device/devtools_android_bridge.h" @@ -527,7 +526,7 @@ class AndroidUsbDiscoveryTest : public InProcessBrowserTest { void ScheduleDeviceCountRequest(const base::Closure& request) { DCHECK_CURRENTLY_ON(BrowserThread::UI); scheduler_invoked_++; - base::PostTask(FROM_HERE, {BrowserThread::UI}, request); + content::GetUIThreadTaskRunner({})->PostTask(FROM_HERE, request); } virtual std::unique_ptr<FakeUsbDeviceManager> CreateFakeUsbManager() { diff --git a/chromium/chrome/browser/devtools/device/usb/usb_device_manager_helper.cc b/chromium/chrome/browser/devtools/device/usb/usb_device_manager_helper.cc index fcc10845fc9..a6452ed6bf9 100644 --- a/chromium/chrome/browser/devtools/device/usb/usb_device_manager_helper.cc +++ b/chromium/chrome/browser/devtools/device/usb/usb_device_manager_helper.cc @@ -10,7 +10,6 @@ #include "base/bind.h" #include "base/no_destructor.h" #include "base/strings/utf_string_conversions.h" -#include "base/task/post_task.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/device_service.h" @@ -193,8 +192,8 @@ void UsbDeviceManagerHelper::EnsureUsbDeviceManagerConnection() { return; } - base::PostTask(FROM_HERE, {content::BrowserThread::UI}, - base::BindOnce(&BindDeviceServiceOnUIThread, + content::GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&BindDeviceServiceOnUIThread, device_manager_.BindNewPipeAndPassReceiver())); device_manager_.set_disconnect_handler( diff --git a/chromium/chrome/browser/devtools/devtools_browser_context_manager.cc b/chromium/chrome/browser/devtools/devtools_browser_context_manager.cc index cc6da5ee753..3974183c25b 100644 --- a/chromium/chrome/browser/devtools/devtools_browser_context_manager.cc +++ b/chromium/chrome/browser/devtools/devtools_browser_context_manager.cc @@ -35,7 +35,7 @@ content::BrowserContext* DevToolsBrowserContextManager::CreateBrowserContext() { ProfileManager::GetActiveUserProfile()->GetOriginalProfile(); Profile* otr_profile = original_profile->GetOffTheRecordProfile( - Profile::OTRProfileID::CreateUnique("Devtools::BrowserContext")); + Profile::OTRProfileID::CreateUniqueForDevTools()); const std::string& context_id = otr_profile->UniqueId(); otr_profiles_[context_id] = otr_profile; otr_profile->AddObserver(this); diff --git a/chromium/chrome/browser/devtools/devtools_file_helper.cc b/chromium/chrome/browser/devtools/devtools_file_helper.cc index 1b441f5cc4d..98ab93a0e0b 100644 --- a/chromium/chrome/browser/devtools/devtools_file_helper.cc +++ b/chromium/chrome/browser/devtools/devtools_file_helper.cc @@ -17,7 +17,7 @@ #include "base/task/post_task.h" #include "base/task/thread_pool.h" #include "base/threading/sequenced_task_runner_handle.h" -#include "base/value_conversions.h" +#include "base/util/values/values_util.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/devtools/devtools_file_watcher.h" #include "chrome/browser/download/download_prefs.h" @@ -245,9 +245,9 @@ void DevToolsFileHelper::Save(const std::string& url, const base::Value* path_value; if (file_map->Get(base::MD5String(url), &path_value)) { - // Ignore base::GetValueAsFilePath() failure since we handle empty - // |initial_path| below. - ignore_result(base::GetValueAsFilePath(*path_value, &initial_path)); + base::Optional<base::FilePath> path = util::ValueToFilePath(*path_value); + if (path) + initial_path = std::move(*path); } if (initial_path.empty()) { @@ -301,7 +301,7 @@ void DevToolsFileHelper::SaveAsFileSelected(const std::string& url, DictionaryPrefUpdate update(profile_->GetPrefs(), prefs::kDevToolsEditedFiles); base::DictionaryValue* files_map = update.Get(); - files_map->SetKey(base::MD5String(url), base::CreateFilePathValue(path)); + files_map->SetKey(base::MD5String(url), util::FilePathToValue(path)); std::string file_system_path = path.AsUTF8Unsafe(); callback.Run(file_system_path); file_task_runner_->PostTask(FROM_HERE, BindOnce(&WriteToFile, path, content)); diff --git a/chromium/chrome/browser/devtools/devtools_file_system_indexer.cc b/chromium/chrome/browser/devtools/devtools_file_system_indexer.cc index 0f7479de0c5..542b35f637d 100644 --- a/chromium/chrome/browser/devtools/devtools_file_system_indexer.cc +++ b/chromium/chrome/browser/devtools/devtools_file_system_indexer.cc @@ -20,7 +20,6 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/task/lazy_thread_pool_task_runner.h" -#include "base/task/post_task.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" @@ -322,8 +321,8 @@ void DevToolsFileSystemIndexer::FileSystemIndexingJob::CollectFilesToIndex() { } if (file_path.empty()) { - base::PostTask(FROM_HERE, {BrowserThread::UI}, - BindOnce(total_work_callback_, file_path_times_.size())); + content::GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, BindOnce(total_work_callback_, file_path_times_.size())); indexing_it_ = file_path_times_.begin(); IndexFiles(); return; @@ -359,7 +358,7 @@ void DevToolsFileSystemIndexer::FileSystemIndexingJob::IndexFiles() { return; if (indexing_it_ == file_path_times_.end()) { g_trigram_index.Get().NormalizeVectors(); - base::PostTask(FROM_HERE, {BrowserThread::UI}, done_callback_); + content::GetUIThreadTaskRunner({})->PostTask(FROM_HERE, done_callback_); return; } FilePath file_path = indexing_it_->first; @@ -451,8 +450,8 @@ void DevToolsFileSystemIndexer::FileSystemIndexingJob::ReportWorked() { ++files_indexed_; if (should_send_worked_nitification) { last_worked_notification_time_ = current_time; - base::PostTask(FROM_HERE, {BrowserThread::UI}, - BindOnce(worked_callback_, files_indexed_)); + content::GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, BindOnce(worked_callback_, files_indexed_)); files_indexed_ = 0; } } @@ -515,6 +514,6 @@ void DevToolsFileSystemIndexer::SearchInPathOnImplSequence( if (path.IsParent(*it)) result.push_back(it->AsUTF8Unsafe()); } - base::PostTask(FROM_HERE, {BrowserThread::UI}, - BindOnce(callback, std::move(result))); + content::GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, BindOnce(callback, std::move(result))); } diff --git a/chromium/chrome/browser/devtools/devtools_file_watcher_unittest.cc b/chromium/chrome/browser/devtools/devtools_file_watcher_unittest.cc index b40aa6978a9..a67aa887196 100644 --- a/chromium/chrome/browser/devtools/devtools_file_watcher_unittest.cc +++ b/chromium/chrome/browser/devtools/devtools_file_watcher_unittest.cc @@ -71,7 +71,7 @@ TEST_F(DevToolsFileWatcherTest, BasicUsage) { } expected_removed_paths_.insert(added_path.AsUTF8Unsafe()); - base::DeleteFile(added_path, false); + base::DeleteFile(added_path); while (!expected_removed_paths_.empty()) { task_environment_.RunUntilIdle(); base::PlatformThread::Sleep(TestTimeouts::tiny_timeout()); diff --git a/chromium/chrome/browser/devtools/devtools_sanity_browsertest.cc b/chromium/chrome/browser/devtools/devtools_sanity_browsertest.cc index 86d3a035d4e..53722ab2dbd 100644 --- a/chromium/chrome/browser/devtools/devtools_sanity_browsertest.cc +++ b/chromium/chrome/browser/devtools/devtools_sanity_browsertest.cc @@ -24,7 +24,6 @@ #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" -#include "base/task/post_task.h" #include "base/test/scoped_feature_list.h" #include "base/test/test_timeouts.h" #include "base/threading/thread_restrictions.h" @@ -37,6 +36,7 @@ #include "chrome/browser/extensions/extension_apitest.h" #include "chrome/browser/extensions/extension_browsertest.h" #include "chrome/browser/extensions/extension_service.h" +#include "chrome/browser/extensions/extension_util.h" #include "chrome/browser/extensions/unpacked_installer.h" #include "chrome/browser/lifetime/application_lifetime.h" #include "chrome/browser/lifetime/browser_shutdown.h" @@ -114,7 +114,6 @@ #include "chromeos/constants/chromeos_switches.h" #endif -using content::BrowserThread; using content::DevToolsAgentHost; using content::DevToolsAgentHostObserver; using content::NavigationController; @@ -217,7 +216,7 @@ void SwitchToExtensionPanel(DevToolsWindow* window, class DevToolsSanityTest : public InProcessBrowserTest { public: - DevToolsSanityTest() : window_(NULL) {} + DevToolsSanityTest() : window_(nullptr) {} void SetUpOnMainThread() override { host_resolver()->AddRule("*", "127.0.0.1"); @@ -258,6 +257,14 @@ class DevToolsSanityTest : public InProcessBrowserTest { is_docked); } + void OpenDevToolsWindowOnOffTheRecordTab(const std::string& test_page) { + GURL url = spawned_test_server()->GetURL("").Resolve(test_page); + auto* otr_browser = OpenURLOffTheRecord(browser()->profile(), url); + + window_ = DevToolsWindowTesting::OpenDevToolsWindowSync( + otr_browser->tab_strip_model()->GetWebContentsAt(0), false); + } + WebContents* GetInspectedTab() { return browser()->tab_strip_model()->GetWebContentsAt(0); } @@ -611,7 +618,7 @@ class DevToolsExperimentalExtensionTest : public DevToolsExtensionTest { class WorkerDevToolsSanityTest : public InProcessBrowserTest { public: - WorkerDevToolsSanityTest() : window_(NULL) {} + WorkerDevToolsSanityTest() : window_(nullptr) {} protected: class WorkerCreationObserver : public DevToolsAgentHostObserver { @@ -632,7 +639,7 @@ class WorkerDevToolsSanityTest : public InProcessBrowserTest { if (host->GetType() == DevToolsAgentHost::kTypeSharedWorker && host->GetURL().path().rfind(path_) != std::string::npos) { *out_host_ = host; - base::PostTask(FROM_HERE, {BrowserThread::UI}, quit_); + content::GetUIThreadTaskRunner({})->PostTask(FROM_HERE, quit_); delete this; } } @@ -854,6 +861,25 @@ IN_PROC_BROWSER_TEST_F(DevToolsExtensionTest, RunTest("waitForTestResultsInConsole", std::string()); } +// Tests that chrome.devtools extension is correctly exposed. +IN_PROC_BROWSER_TEST_F(DevToolsExtensionTest, TestExtensionOnNewTab) { + // Not really required by this test, but the underlying code happens + // to expect it. + ASSERT_TRUE(embedded_test_server()->Start()); + // Install the dynamically-generated devtools extension. + const Extension* devtools_extension = LoadExtensionForTest( + "Devtools Extension", "panel_devtools_page.html", ""); + ASSERT_TRUE(devtools_extension); + extensions::util::SetIsIncognitoEnabled(devtools_extension->id(), + browser()->profile(), true); + + OpenDevToolsWindowOnOffTheRecordTab(chrome::kChromeUINewTabURL); + + // Wait for the extension's panel to finish loading -- it'll output 'PASS' + // when it's installed. waitForTestResultsInConsole waits until that 'PASS'. + RunTestFunction(window_, "waitForTestResultsInConsole"); +} + // Tests that http Iframes within the visible devtools panel for the devtools // extension are rendered in their own processes and not in the devtools process // or the extension's process. This is tested because this is one of the @@ -1115,8 +1141,9 @@ IN_PROC_BROWSER_TEST_F(DevToolsExtensionTest, // Tests that iframes to a non-devtools extension embedded in a devtools // extension will be isolated from devtools and the devtools extension. // http://crbug.com/570483 +// Disabled due to flakiness https://crbug.com/1062802 IN_PROC_BROWSER_TEST_F(DevToolsExtensionTest, - NonDevToolsExtensionInDevToolsExtension) { + DISABLED_NonDevToolsExtensionInDevToolsExtension) { ASSERT_TRUE(embedded_test_server()->Start()); // Install the dynamically-generated non-devtools extension. @@ -1510,8 +1537,13 @@ IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, // Tests that debugger works correctly if pause event occurs when DevTools // frontend is being loaded. -IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, - TestPauseWhenLoadingDevTools) { +// Flaky on win and linux: crbug.com/1092924. +#if defined(OS_WIN) || defined(OS_LINUX) +#define MAYBE_TestPauseWhenLoadingDevTools DISABLED_TestPauseWhenLoadingDevTools +#else +#define MAYBE_TestPauseWhenLoadingDevTools TestPauseWhenLoadingDevTools +#endif +IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, MAYBE_TestPauseWhenLoadingDevTools) { RunTest("testPauseWhenLoadingDevTools", kPauseWhenLoadingDevTools); } @@ -1600,7 +1632,13 @@ IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestNetworkPushTime) { CloseDevToolsWindow(); } -IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestDOMWarnings) { +#if defined(OS_WIN) +// Flaky on Windows: https://crbug.com/1087320 +#define MAYBE_TestDOMWarnings DISABLED_TestDOMWarnings +#else +#define MAYBE_TestDOMWarnings TestDOMWarnings +#endif +IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, MAYBE_TestDOMWarnings) { RunTest("testDOMWarnings", kDOMWarningsTestPage); } @@ -1687,6 +1725,14 @@ IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, testKeyEventUnhandled) { CloseDevToolsWindow(); } +// Tests that the keys that are forwarded from the browser update +// when their shortcuts change +IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, testForwardedKeysChanged) { + OpenDevToolsWindow("about:blank", true); + RunTestFunction(window_, "testForwardedKeysChanged"); + CloseDevToolsWindow(); +} + // Test that showing a certificate in devtools does not crash the process. // Disabled on windows as this opens a modal in its own thread, which leads to a // test timeout. diff --git a/chromium/chrome/browser/devtools/devtools_ui_bindings.cc b/chromium/chrome/browser/devtools/devtools_ui_bindings.cc index 3af6ba32420..7986d2e6ecb 100644 --- a/chromium/chrome/browser/devtools/devtools_ui_bindings.cc +++ b/chromium/chrome/browser/devtools/devtools_ui_bindings.cc @@ -103,6 +103,10 @@ static const char kDevToolsKeyboardShortcutFiredHistogram[] = "DevTools.KeyboardShortcutFired"; static const char kDevToolsIssuesPanelOpenedFromHistogram[] = "DevTools.IssuesPanelOpenedFrom"; +static const char kDevToolsKeybindSetSettingChanged[] = + "DevTools.KeybindSetSettingChanged"; +static const char kDevToolsDualScreenDeviceEmulatedHistogram[] = + "DevTools.DualScreenDeviceEmulated"; static const char kRemotePageActionInspect[] = "inspect"; static const char kRemotePageActionReload[] = "reload"; @@ -1237,13 +1241,17 @@ void DevToolsUIBindings::RecordEnumeratedHistogram(const std::string& name, // Each histogram name must follow a different code path in // order to UMA_HISTOGRAM_EXACT_LINEAR work correctly. if (name == kDevToolsActionTakenHistogram) - UMA_HISTOGRAM_EXACT_LINEAR(name, sample, boundary_value); + base::UmaHistogramExactLinear(name, sample, boundary_value); else if (name == kDevToolsPanelShownHistogram) - UMA_HISTOGRAM_EXACT_LINEAR(name, sample, boundary_value); + base::UmaHistogramExactLinear(name, sample, boundary_value); else if (name == kDevToolsKeyboardShortcutFiredHistogram) - UMA_HISTOGRAM_EXACT_LINEAR(name, sample, boundary_value); + base::UmaHistogramExactLinear(name, sample, boundary_value); else if (name == kDevToolsIssuesPanelOpenedFromHistogram) - UMA_HISTOGRAM_EXACT_LINEAR(name, sample, boundary_value); + base::UmaHistogramExactLinear(name, sample, boundary_value); + else if (name == kDevToolsKeybindSetSettingChanged) + base::UmaHistogramExactLinear(name, sample, boundary_value); + else if (name == kDevToolsDualScreenDeviceEmulatedHistogram) + base::UmaHistogramExactLinear(name, sample, boundary_value); else frontend_host_->BadMessageRecieved(); } @@ -1551,12 +1559,7 @@ void DevToolsUIBindings::ReadyToCommitNavigation( } void DevToolsUIBindings::DocumentOnLoadCompletedInMainFrame() { - // In the DEBUG_DEVTOOLS mode, the DocumentOnLoadCompletedInMainFrame event - // arrives before the LoadCompleted event, thus it should not trigger the - // frontend load handling. -#if !BUILDFLAG(DEBUG_DEVTOOLS) FrontendLoaded(); -#endif } void DevToolsUIBindings::DidNavigateMainFrame() { diff --git a/chromium/chrome/browser/devtools/devtools_window.cc b/chromium/chrome/browser/devtools/devtools_window.cc index 817fd22ff31..f85ed231165 100644 --- a/chromium/chrome/browser/devtools/devtools_window.cc +++ b/chromium/chrome/browser/devtools/devtools_window.cc @@ -37,7 +37,6 @@ #include "chrome/common/pref_names.h" #include "chrome/common/url_constants.h" #include "components/javascript_dialogs/app_modal_dialog_manager.h" -#include "components/performance_manager/embedder/performance_manager_registry.h" #include "components/pref_registry/pref_registry_syncable.h" #include "components/prefs/scoped_user_pref_update.h" #include "components/sessions/content/session_tab_helper.h" @@ -170,7 +169,7 @@ content::WebContents* DevToolsToolboxDelegate::OpenURLFromTab( const content::OpenURLParams& params) { DCHECK(source == web_contents()); if (!params.url.SchemeIs(content::kChromeDevToolsScheme)) - return NULL; + return nullptr; source->GetController().LoadURLWithParams( content::NavigationController::LoadURLParams(params)); return source; @@ -205,12 +204,12 @@ BrowserWindow* DevToolsToolboxDelegate::GetInspectedBrowserWindow() { WebContents* inspected_contents = inspected_contents_observer_->web_contents(); if (!inspected_contents) - return NULL; - Browser* browser = NULL; + return nullptr; + Browser* browser = nullptr; int tab = 0; if (FindInspectedBrowserAndTabIndex(inspected_contents, &browser, &tab)) return browser->window(); - return NULL; + return nullptr; } // static @@ -227,9 +226,9 @@ GURL DecorateFrontendURL(const GURL& base_url) { switches::kDevToolsFlags); } -#if BUILDFLAG(DEBUG_DEVTOOLS) - url_string += "&debugFrontend=true"; -#endif // BUILDFLAG(DEBUG_DEVTOOLS) + if (command_line->HasSwitch(switches::kCustomDevtoolsFrontend)) { + url_string += "&debugFrontend=true"; + } return GURL(url_string); } @@ -456,18 +455,18 @@ content::WebContents* DevToolsWindow::GetInTabWebContents( DevToolsWindow* window = GetInstanceForInspectedWebContents( inspected_web_contents); if (!window || window->life_stage_ == kClosing) - return NULL; + return nullptr; // Not yet loaded window is treated as docked, but we should not present it // until we decided on docking. bool is_docked_set = window->life_stage_ == kLoadCompleted || window->life_stage_ == kIsDockedSet; if (!is_docked_set) - return NULL; + return nullptr; // Undocked window should have toolbox web contents. if (!window->is_docked_ && !window->toolbox_web_contents_) - return NULL; + return nullptr; if (out_strategy) out_strategy->CopyFrom(window->contents_resizing_strategy_); @@ -480,13 +479,13 @@ content::WebContents* DevToolsWindow::GetInTabWebContents( DevToolsWindow* DevToolsWindow::GetInstanceForInspectedWebContents( WebContents* inspected_web_contents) { if (!inspected_web_contents || !g_devtools_window_instances.IsCreated()) - return NULL; + return nullptr; DevToolsWindows* instances = g_devtools_window_instances.Pointer(); for (auto it(instances->begin()); it != instances->end(); ++it) { if ((*it)->GetInspectedWebContents() == inspected_web_contents) return *it; } - return NULL; + return nullptr; } // static @@ -732,7 +731,7 @@ void DevToolsWindow::InspectElement( scoped_refptr<DevToolsAgentHost> agent( DevToolsAgentHost::GetOrCreateFor(web_contents)); agent->InspectElement(inspected_frame_host, x, y); - bool should_measure_time = FindDevToolsWindow(agent.get()) == NULL; + bool should_measure_time = !FindDevToolsWindow(agent.get()); base::TimeTicks start_time = base::TimeTicks::Now(); // TODO(loislo): we should initiate DevTools window opening from within // renderer. Otherwise, we still can hit a race condition here. @@ -800,7 +799,7 @@ void DevToolsWindow::Show(const DevToolsToggleAction& action) { return; if (is_docked_) { DCHECK(can_dock_); - Browser* inspected_browser = NULL; + Browser* inspected_browser = nullptr; int inspected_tab_index = -1; FindInspectedBrowserAndTabIndex(GetInspectedWebContents(), &inspected_browser, @@ -959,8 +958,6 @@ DevToolsWindow::DevToolsWindow(FrontendType frontend_type, zoom::ZoomController::CreateForWebContents(main_web_contents_); zoom::ZoomController::FromWebContents(main_web_contents_) ->SetShowsNotificationBubble(false); - performance_manager::PerformanceManagerRegistry::GetInstance() - ->CreatePageNodeForWebContents(main_web_contents_); g_devtools_window_instances.Get().push_back(this); @@ -1101,26 +1098,26 @@ GURL DevToolsWindow::GetDevToolsURL(Profile* profile, DevToolsWindow* DevToolsWindow::FindDevToolsWindow( DevToolsAgentHost* agent_host) { if (!agent_host || !g_devtools_window_instances.IsCreated()) - return NULL; + return nullptr; DevToolsWindows* instances = g_devtools_window_instances.Pointer(); for (auto it(instances->begin()); it != instances->end(); ++it) { if ((*it)->bindings_->IsAttachedTo(agent_host)) return *it; } - return NULL; + return nullptr; } // static DevToolsWindow* DevToolsWindow::AsDevToolsWindow( content::WebContents* web_contents) { if (!web_contents || !g_devtools_window_instances.IsCreated()) - return NULL; + return nullptr; DevToolsWindows* instances = g_devtools_window_instances.Pointer(); for (auto it(instances->begin()); it != instances->end(); ++it) { if ((*it)->main_web_contents_ == web_contents) return *it; } - return NULL; + return nullptr; } WebContents* DevToolsWindow::OpenURLFromTab( @@ -1366,7 +1363,7 @@ void DevToolsWindow::SetIsDocked(bool dock_requested) { // Removing the only WebContents from the tab strip of browser_ will // eventually lead to the destruction of browser_ as well, which is why it's // okay to just null the raw pointer here. - browser_ = NULL; + browser_ = nullptr; owned_main_web_contents_ = tab_strip_model->DetachWebContentsAt( tab_strip_model->GetIndexOfWebContents(main_web_contents_)); @@ -1475,7 +1472,7 @@ void DevToolsWindow::ShowCertificateViewer(const std::string& cert_chain) { WebContents* inspected_contents = is_docked_ ? GetInspectedWebContents() : main_web_contents_; - Browser* browser = NULL; + Browser* browser = nullptr; int tab = 0; if (!FindInspectedBrowserAndTabIndex(inspected_contents, &browser, &tab)) return; @@ -1549,11 +1546,12 @@ void DevToolsWindow::CreateDevToolsBrowser() { } BrowserWindow* DevToolsWindow::GetInspectedBrowserWindow() { - Browser* browser = NULL; + Browser* browser = nullptr; int tab; - return FindInspectedBrowserAndTabIndex(GetInspectedWebContents(), - &browser, &tab) ? - browser->window() : NULL; + return FindInspectedBrowserAndTabIndex(GetInspectedWebContents(), &browser, + &tab) + ? browser->window() + : nullptr; } void DevToolsWindow::DoAction(const DevToolsToggleAction& action) { @@ -1589,7 +1587,7 @@ void DevToolsWindow::DoAction(const DevToolsToggleAction& action) { void DevToolsWindow::UpdateBrowserToolbar() { BrowserWindow* inspected_window = GetInspectedBrowserWindow(); if (inspected_window) - inspected_window->UpdateToolbar(NULL); + inspected_window->UpdateToolbar(nullptr); } void DevToolsWindow::UpdateBrowserWindow() { @@ -1601,7 +1599,7 @@ void DevToolsWindow::UpdateBrowserWindow() { WebContents* DevToolsWindow::GetInspectedWebContents() { return inspected_contents_observer_ ? inspected_contents_observer_->web_contents() - : NULL; + : nullptr; } void DevToolsWindow::LoadCompleted() { diff --git a/chromium/chrome/browser/devtools/devtools_window.h b/chromium/chrome/browser/devtools/devtools_window.h index e89f2698aeb..d593dad9323 100644 --- a/chromium/chrome/browser/devtools/devtools_window.h +++ b/chromium/chrome/browser/devtools/devtools_window.h @@ -58,15 +58,15 @@ class DevToolsWindow : public DevToolsUIBindings::Delegate, content::WebContents* web_contents); // Return the DevToolsWindow for the given WebContents if one exists, - // otherwise NULL. + // otherwise nullptr. static DevToolsWindow* GetInstanceForInspectedWebContents( content::WebContents* inspected_web_contents); // Return the docked DevTools WebContents for the given inspected WebContents - // if one exists and should be shown in browser window, otherwise NULL. + // if one exists and should be shown in browser window, otherwise nullptr. // This method will return only fully initialized window ready to be // presented in UI. - // If |out_strategy| is not NULL, it will contain resizing strategy. + // If |out_strategy| is not nullptr, it will contain resizing strategy. // For immediately-ready-to-use but maybe not yet fully initialized DevTools // use |GetInstanceForInspectedRenderViewHost| instead. static content::WebContents* GetInTabWebContents( diff --git a/chromium/chrome/browser/devtools/protocol/DEPS b/chromium/chrome/browser/devtools/protocol/DEPS index 76297a762e6..109e3a5657e 100644 --- a/chromium/chrome/browser/devtools/protocol/DEPS +++ b/chromium/chrome/browser/devtools/protocol/DEPS @@ -1,5 +1,4 @@ specific_include_rules = { - # TODO(mash): Fix. https://crbug.com/758061 "window_manager_handler\.cc": [ "+ash/shell.h", "+ash/wm/overview/overview_controller.h", diff --git a/chromium/chrome/browser/devtools/protocol/browser_handler.cc b/chromium/chrome/browser/devtools/protocol/browser_handler.cc index 3ba37138d18..1f8425dec8d 100644 --- a/chromium/chrome/browser/devtools/protocol/browser_handler.cc +++ b/chromium/chrome/browser/devtools/protocol/browser_handler.cc @@ -9,7 +9,6 @@ #include "base/bind.h" #include "base/memory/ref_counted_memory.h" -#include "base/task/post_task.h" #include "chrome/browser/devtools/chrome_devtools_manager_delegate.h" #include "chrome/browser/devtools/devtools_dock_tile.h" #include "chrome/browser/lifetime/application_lifetime.h" @@ -112,8 +111,8 @@ Response BrowserHandler::GetWindowBounds( } Response BrowserHandler::Close() { - base::PostTask( - FROM_HERE, {content::BrowserThread::UI}, base::BindOnce([]() { + content::GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce([]() { if (ChromeDevToolsManagerDelegate::GetInstance()) ChromeDevToolsManagerDelegate::GetInstance()->BrowserCloseRequested(); chrome::ExitIgnoreUnloadHandlers(); diff --git a/chromium/chrome/browser/devtools/protocol/security_handler.cc b/chromium/chrome/browser/devtools/protocol/security_handler.cc index 03b2d85aa6c..c44998a5ca9 100644 --- a/chromium/chrome/browser/devtools/protocol/security_handler.cc +++ b/chromium/chrome/browser/devtools/protocol/security_handler.cc @@ -47,7 +47,6 @@ std::string SecurityLevelToProtocolSecurityState( return protocol::Security::SecurityStateEnum::Insecure; return protocol::Security::SecurityStateEnum::Neutral; case security_state::SECURE_WITH_POLICY_INSTALLED_CERT: - case security_state::EV_SECURE: case security_state::SECURE: return protocol::Security::SecurityStateEnum::Secure; case security_state::DANGEROUS: diff --git a/chromium/chrome/browser/devtools/remote_debugging_server.cc b/chromium/chrome/browser/devtools/remote_debugging_server.cc index e57ed9c6da7..4a5a033c65b 100644 --- a/chromium/chrome/browser/devtools/remote_debugging_server.cc +++ b/chromium/chrome/browser/devtools/remote_debugging_server.cc @@ -16,9 +16,11 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_list.h" #include "chrome/common/chrome_paths.h" +#include "chrome/common/chrome_switches.h" #include "content/public/browser/devtools_agent_host.h" #include "content/public/browser/devtools_socket_factory.h" #include "content/public/common/content_switches.h" +#include "net/base/filename_util.h" #include "net/base/net_errors.h" #include "net/log/net_log_source.h" #include "net/socket/tcp_server_socket.h" @@ -108,10 +110,13 @@ RemoteDebuggingServer::RemoteDebuggingServer() { } base::FilePath debug_frontend_dir; -#if BUILDFLAG(DEBUG_DEVTOOLS) - base::PathService::Get(chrome::DIR_INSPECTOR_DEBUG, &debug_frontend_dir); -#endif - + if (command_line.HasSwitch(::switches::kCustomDevtoolsFrontend)) { + GURL custom_devtools_frontend_url(command_line.GetSwitchValueASCII( + ::switches::kCustomDevtoolsFrontend)); + if (custom_devtools_frontend_url.SchemeIsFile()) { + net::FileURLToFilePath(custom_devtools_frontend_url, &debug_frontend_dir); + } + } content::DevToolsAgentHost::StartRemoteDebuggingServer( std::make_unique<TCPServerSocketFactory>(port), output_dir, debug_frontend_dir); |