| Index: content/shell/browser/layout_test/blink_test_controller.cc
|
| diff --git a/content/shell/browser/layout_test/blink_test_controller.cc b/content/shell/browser/layout_test/blink_test_controller.cc
|
| index fc0fe6235feea65be87fa034db8a224743d974f8..91f7c13a3693863a2e040c9439e7fefbcb39ee28 100644
|
| --- a/content/shell/browser/layout_test/blink_test_controller.cc
|
| +++ b/content/shell/browser/layout_test/blink_test_controller.cc
|
| @@ -45,6 +45,7 @@
|
| #include "content/shell/browser/shell_browser_context.h"
|
| #include "content/shell/browser/shell_content_browser_client.h"
|
| #include "content/shell/browser/shell_devtools_frontend.h"
|
| +#include "content/shell/common/layout_test/layout_test_messages.h"
|
| #include "content/shell/common/layout_test/layout_test_switches.h"
|
| #include "content/shell/common/shell_messages.h"
|
| #include "content/shell/renderer/layout_test/blink_test_helpers.h"
|
| @@ -379,7 +380,7 @@ void BlinkTestController::OpenURL(const GURL& url) {
|
| gfx::Size());
|
| }
|
|
|
| -void BlinkTestController::TestFinishedInSecondaryRenderer() {
|
| +void BlinkTestController::OnTestFinishedInSecondaryRenderer() {
|
| RenderViewHost* render_view_host =
|
| main_window_->web_contents()->GetRenderViewHost();
|
| render_view_host->Send(
|
| @@ -446,8 +447,6 @@ bool BlinkTestController::OnMessageReceived(
|
| bool handled = true;
|
| IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(BlinkTestController, message,
|
| render_frame_host)
|
| - IPC_MESSAGE_HANDLER(ShellViewHostMsg_LayoutTestRuntimeFlagsChanged,
|
| - OnLayoutTestRuntimeFlagsChanged)
|
| IPC_MESSAGE_HANDLER(ShellViewHostMsg_LayoutDumpResponse,
|
| OnLayoutDumpResponse)
|
| IPC_MESSAGE_UNHANDLED(handled = false)
|
| @@ -608,8 +607,7 @@ void BlinkTestController::HandleNewRenderFrameHost(RenderFrameHost* frame) {
|
|
|
| if (did_send_initial_test_configuration_) {
|
| frame->Send(new ShellViewMsg_ReplicateTestConfiguration(
|
| - frame->GetRoutingID(), params,
|
| - accumulated_layout_test_runtime_flags_changes_));
|
| + frame->GetRoutingID(), params));
|
| } else {
|
| did_send_initial_test_configuration_ = true;
|
| frame->Send(
|
| @@ -626,6 +624,9 @@ void BlinkTestController::HandleNewRenderFrameHost(RenderFrameHost* frame) {
|
| frame->Send(
|
| new ShellViewMsg_SetupSecondaryRenderer(frame->GetRoutingID()));
|
| }
|
| +
|
| + process->Send(new LayoutTestMsg_ReplicateLayoutTestRuntimeFlagsChanges(
|
| + accumulated_layout_test_runtime_flags_changes_));
|
| }
|
| }
|
|
|
| @@ -697,29 +698,22 @@ void BlinkTestController::OnInitiateLayoutDump() {
|
| }
|
|
|
| void BlinkTestController::OnLayoutTestRuntimeFlagsChanged(
|
| - RenderFrameHost* sender,
|
| + int sender_process_host_id,
|
| const base::DictionaryValue& changed_layout_test_runtime_flags) {
|
| - // Stash the changes for future renderers.
|
| + // Stash the accumulated changes for future, not-yet-created renderers.
|
| accumulated_layout_test_runtime_flags_changes_.MergeDictionary(
|
| &changed_layout_test_runtime_flags);
|
|
|
| - // Only need to send the propagation message once per renderer process.
|
| - std::set<int> already_covered_process_ids;
|
| -
|
| - // No need to propagate the changes back to the process that originated them.
|
| - // (propagating them back could also clobber subsequent changes in the
|
| - // originator).
|
| - already_covered_process_ids.insert(sender->GetProcess()->GetID());
|
| -
|
| - // Propagate the changes to all the renderer processes associated with the
|
| - // main window.
|
| - for (RenderFrameHost* frame : main_window_->web_contents()->GetAllFrames()) {
|
| - bool inserted_new_item =
|
| - already_covered_process_ids.insert(frame->GetProcess()->GetID()).second;
|
| - if (inserted_new_item) {
|
| - frame->Send(new ShellViewMsg_ReplicateLayoutTestRuntimeFlagsChanges(
|
| - frame->GetRoutingID(), changed_layout_test_runtime_flags));
|
| - }
|
| + // Propagate the changes to all the tracked renderer processes.
|
| + for (RenderProcessHost* process : all_observed_render_process_hosts_) {
|
| + // Do not propagate the changes back to the process that originated them.
|
| + // (propagating them back could also clobber subsequent changes in the
|
| + // originator).
|
| + if (process->GetID() == sender_process_host_id)
|
| + continue;
|
| +
|
| + process->Send(new LayoutTestMsg_ReplicateLayoutTestRuntimeFlagsChanges(
|
| + changed_layout_test_runtime_flags));
|
| }
|
| }
|
|
|
|
|