| Index: content/shell/test_runner/test_runner_for_specific_view.cc | 
| diff --git a/content/shell/test_runner/test_runner_for_specific_view.cc b/content/shell/test_runner/test_runner_for_specific_view.cc | 
| index e90cbab4422817f5332172d6064f4dab421229ec..461646c11e0dc3d34d36de7c8ed538da065f018d 100644 | 
| --- a/content/shell/test_runner/test_runner_for_specific_view.cc | 
| +++ b/content/shell/test_runner/test_runner_for_specific_view.cc | 
| @@ -185,7 +185,7 @@ void TestRunnerForSpecificView::InvokeV8CallbackWithArgs( | 
| v8::Isolate* isolate = blink::MainThreadIsolate(); | 
| v8::HandleScope handle_scope(isolate); | 
|  | 
| -  WebFrame* frame = web_view()->MainFrame(); | 
| +  blink::WebLocalFrame* frame = GetLocalMainFrame(); | 
| v8::Local<v8::Context> context = frame->MainWorldScriptContext(); | 
| if (context.IsEmpty()) | 
| return; | 
| @@ -249,7 +249,7 @@ void TestRunnerForSpecificView::CapturePixelsCallback( | 
| v8::HandleScope handle_scope(isolate); | 
|  | 
| v8::Local<v8::Context> context = | 
| -      web_view()->MainFrame()->MainWorldScriptContext(); | 
| +      GetLocalMainFrame()->MainWorldScriptContext(); | 
| if (context.IsEmpty()) | 
| return; | 
|  | 
| @@ -331,7 +331,7 @@ void TestRunnerForSpecificView::GetBluetoothManualChooserEventsCallback( | 
| v8::Isolate* isolate = blink::MainThreadIsolate(); | 
| v8::HandleScope handle_scope(isolate); | 
| v8::Local<v8::Context> context = | 
| -      web_view()->MainFrame()->MainWorldScriptContext(); | 
| +      GetLocalMainFrame()->MainWorldScriptContext(); | 
| if (context.IsEmpty()) | 
| return; | 
| v8::Context::Scope context_scope(context); | 
| @@ -408,7 +408,7 @@ void TestRunnerForSpecificView::DispatchBeforeInstallPromptCallback( | 
| v8::HandleScope handle_scope(isolate); | 
|  | 
| v8::Local<v8::Context> context = | 
| -      web_view()->MainFrame()->MainWorldScriptContext(); | 
| +      GetLocalMainFrame()->MainWorldScriptContext(); | 
| if (context.IsEmpty()) | 
| return; | 
|  | 
| @@ -572,13 +572,7 @@ void TestRunnerForSpecificView::DidLosePointerLockInternal() { | 
| } | 
|  | 
| bool TestRunnerForSpecificView::CallShouldCloseOnWebView() { | 
| -  if (!web_view()->MainFrame()->ToWebLocalFrame()) { | 
| -    CHECK(false) << "This function cannot be called if the main frame is not a " | 
| -                    "local frame."; | 
| -  } | 
| - | 
| -  return web_view()->MainFrame()->ToWebLocalFrame()->DispatchBeforeUnloadEvent( | 
| -      false); | 
| +  return GetLocalMainFrame()->DispatchBeforeUnloadEvent(false); | 
| } | 
|  | 
| void TestRunnerForSpecificView::SetDomainRelaxationForbiddenForURLScheme( | 
| @@ -662,7 +656,7 @@ bool TestRunnerForSpecificView::FindString( | 
| wrap_around = true; | 
| } | 
|  | 
| -  WebLocalFrame* frame = web_view()->MainFrame()->ToWebLocalFrame(); | 
| +  WebLocalFrame* frame = GetLocalMainFrame(); | 
| const bool find_result = frame->Find(0, WebString::FromUTF8(search_text), | 
| find_options, wrap_around, 0); | 
| frame->StopFinding(WebLocalFrame::kStopFindActionKeepSelection); | 
| @@ -670,25 +664,25 @@ bool TestRunnerForSpecificView::FindString( | 
| } | 
|  | 
| std::string TestRunnerForSpecificView::SelectionAsMarkup() { | 
| -  if (!web_view()->MainFrame()->ToWebLocalFrame()) { | 
| -    CHECK(false) << "This function cannot be called if the main frame is not a " | 
| -                    "local frame."; | 
| -  } | 
| -  return web_view()->MainFrame()->ToWebLocalFrame()->SelectionAsMarkup().Utf8(); | 
| +  return GetLocalMainFrame()->SelectionAsMarkup().Utf8(); | 
| } | 
|  | 
| void TestRunnerForSpecificView::SetViewSourceForFrame(const std::string& name, | 
| bool enabled) { | 
| +  WebFrame* target_frame = | 
| +      GetLocalMainFrame()->FindFrameByName(WebString::FromUTF8(name)); | 
| +  if (target_frame) | 
| +    target_frame->EnableViewSourceMode(enabled); | 
| +} | 
| + | 
| +blink::WebLocalFrame* TestRunnerForSpecificView::GetLocalMainFrame() { | 
| if (!web_view()->MainFrame()->IsWebLocalFrame()) { | 
| +    // Hitting the check below uncovers a new scenario that requires OOPIF | 
| +    // support in the layout tests harness. | 
| CHECK(false) << "This function cannot be called if the main frame is not a " | 
| "local frame."; | 
| } | 
| - | 
| -  WebFrame* target_frame = | 
| -      web_view()->MainFrame()->ToWebLocalFrame()->FindFrameByName( | 
| -          WebString::FromUTF8(name)); | 
| -  if (target_frame) | 
| -    target_frame->EnableViewSourceMode(enabled); | 
| +  return web_view()->MainFrame()->ToWebLocalFrame(); | 
| } | 
|  | 
| blink::WebView* TestRunnerForSpecificView::web_view() { | 
|  |