Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: chrome/browser/extensions/app_process_apitest.cc

Issue 8760024: Cross-process postMessage (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Current checkpoint Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/tab_contents/render_view_host_delegate_helper.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/utf_string_conversions.h" 5 #include "base/utf_string_conversions.h"
6 #include "chrome/browser/extensions/extension_apitest.h" 6 #include "chrome/browser/extensions/extension_apitest.h"
7 #include "chrome/browser/extensions/extension_host.h" 7 #include "chrome/browser/extensions/extension_host.h"
8 #include "chrome/browser/extensions/extension_service.h" 8 #include "chrome/browser/extensions/extension_service.h"
9 #include "chrome/browser/extensions/process_map.h" 9 #include "chrome/browser/extensions/process_map.h"
10 #include "chrome/browser/profiles/profile.h" 10 #include "chrome/browser/profiles/profile.h"
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 browser()->GetTabContentsAt(3)->render_view_host()->process()); 145 browser()->GetTabContentsAt(3)->render_view_host()->process());
146 146
147 // Now let's do the same using window.open. The same should happen. 147 // Now let's do the same using window.open. The same should happen.
148 ASSERT_EQ(1u, BrowserList::GetBrowserCount(browser()->profile())); 148 ASSERT_EQ(1u, BrowserList::GetBrowserCount(browser()->profile()));
149 WindowOpenHelper(browser(), host, 149 WindowOpenHelper(browser(), host,
150 base_url.Resolve("path1/empty.html"), true); 150 base_url.Resolve("path1/empty.html"), true);
151 LOG(INFO) << "WindowOpenHelper 1."; 151 LOG(INFO) << "WindowOpenHelper 1.";
152 WindowOpenHelper(browser(), host, 152 WindowOpenHelper(browser(), host,
153 base_url.Resolve("path2/empty.html"), true); 153 base_url.Resolve("path2/empty.html"), true);
154 LOG(INFO) << "WindowOpenHelper 2."; 154 LOG(INFO) << "WindowOpenHelper 2.";
155 // TODO(creis): This should open in a new process (i.e., false for the last 155 // This should open in a new process (i.e., false for the last argument).
156 // argument), but we temporarily avoid swapping processes away from an app
157 // until we're able to support cross-process postMessage calls.
158 // See crbug.com/59285.
159 WindowOpenHelper(browser(), host, 156 WindowOpenHelper(browser(), host,
160 base_url.Resolve("path3/empty.html"), true); 157 base_url.Resolve("path3/empty.html"), false);
161 LOG(INFO) << "WindowOpenHelper 3."; 158 LOG(INFO) << "WindowOpenHelper 3.";
162 159
163 // Now let's have these pages navigate, into or out of the extension web 160 // Now let's have these pages navigate, into or out of the extension web
164 // extent. They should switch processes. 161 // extent. They should switch processes.
165 const GURL& app_url(base_url.Resolve("path1/empty.html")); 162 const GURL& app_url(base_url.Resolve("path1/empty.html"));
166 const GURL& non_app_url(base_url.Resolve("path3/empty.html")); 163 const GURL& non_app_url(base_url.Resolve("path3/empty.html"));
167 NavigateTabHelper(browser()->GetTabContentsAt(2), non_app_url); 164 NavigateTabHelper(browser()->GetTabContentsAt(2), non_app_url);
168 LOG(INFO) << "NavigateTabHelper 1."; 165 LOG(INFO) << "NavigateTabHelper 1.";
169 NavigateTabHelper(browser()->GetTabContentsAt(3), app_url); 166 NavigateTabHelper(browser()->GetTabContentsAt(3), app_url);
170 LOG(INFO) << "NavigateTabHelper 2."; 167 LOG(INFO) << "NavigateTabHelper 2.";
171 // TODO(creis): This should swap out of the app's process (i.e., EXPECT_NE), 168 EXPECT_NE(host->process(),
172 // but we temporarily avoid swapping away from an app in case the window
173 // tries to send a postMessage to the app. See crbug.com/59285.
174 EXPECT_EQ(host->process(),
175 browser()->GetTabContentsAt(2)->render_view_host()->process()); 169 browser()->GetTabContentsAt(2)->render_view_host()->process());
176 EXPECT_EQ(host->process(), 170 EXPECT_EQ(host->process(),
177 browser()->GetTabContentsAt(3)->render_view_host()->process()); 171 browser()->GetTabContentsAt(3)->render_view_host()->process());
178 172
179 // If one of the popup tabs navigates back to the app, window.opener should 173 // If one of the popup tabs navigates back to the app, window.opener should
180 // be valid. 174 // be valid.
181 NavigateTabHelper(browser()->GetTabContentsAt(6), app_url); 175 NavigateTabHelper(browser()->GetTabContentsAt(6), app_url);
182 LOG(INFO) << "NavigateTabHelper 3."; 176 LOG(INFO) << "NavigateTabHelper 3.";
183 EXPECT_EQ(host->process(), 177 EXPECT_EQ(host->process(),
184 browser()->GetTabContentsAt(6)->render_view_host()->process()); 178 browser()->GetTabContentsAt(6)->render_view_host()->process());
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 ASSERT_TRUE(test_server()->Start()); 341 ASSERT_TRUE(test_server()->Start());
348 342
349 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app_process"))); 343 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app_process")));
350 344
351 // Open two tabs in the app. 345 // Open two tabs in the app.
352 GURL base_url = GetTestBaseURL("app_process"); 346 GURL base_url = GetTestBaseURL("app_process");
353 347
354 browser()->NewTab(); 348 browser()->NewTab();
355 ui_test_utils::NavigateToURL(browser(), base_url.Resolve("path1/empty.html")); 349 ui_test_utils::NavigateToURL(browser(), base_url.Resolve("path1/empty.html"));
356 browser()->NewTab(); 350 browser()->NewTab();
357 // Wait until the second tab finishes its redirect train (3 hops). 351 // Wait until the second tab finishes its redirect train (2 hops).
358 // 1. We navigate to redirect.html 352 // 1. We navigate to redirect.html
359 // 2. Renderer navigates and finishes, counting as a load stop. 353 // 2. Renderer navigates and finishes, counting as a load stop.
360 // 3. Renderer issues the meta refresh to navigate to server-redirect. 354 // 3. Renderer issues the meta refresh to navigate to server-redirect.
361 // 4. Renderer is now in a "provisional load", waiting for navigation to 355 // 4. Renderer is now in a "provisional load", waiting for navigation to
362 // complete. 356 // complete.
363 // 5. Browser sees a redirect response from server-redirect to empty.html, and 357 // 5. Browser sees a redirect response from server-redirect to empty.html, and
364 // transfers that to a new navigation, using RequestTransferURL. 358 // transfers that to a new navigation, using RequestTransferURL.
365 // 6. We navigate to empty.html.
366 // 7. Renderer is still in a provisional load to server-redirect, so that is
367 // cancelled, and counts as a load stop
368 // 8. Renderer navigates to empty.html, and finishes loading, counting as the 359 // 8. Renderer navigates to empty.html, and finishes loading, counting as the
369 // third load stop 360 // second load stop
370 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( 361 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(
371 browser(), base_url.Resolve("path1/redirect.html"), 3); 362 browser(), base_url.Resolve("path1/redirect.html"), 2);
372 363
373 // 3 tabs, including the initial about:blank. The last 2 should be the same 364 // 3 tabs, including the initial about:blank. The last 2 should be the same
374 // process. 365 // process.
375 ASSERT_EQ(3, browser()->tab_count()); 366 ASSERT_EQ(3, browser()->tab_count());
376 EXPECT_EQ("/files/extensions/api_test/app_process/path1/empty.html", 367 EXPECT_EQ("/files/extensions/api_test/app_process/path1/empty.html",
377 browser()->GetTabContentsAt(2)->controller(). 368 browser()->GetTabContentsAt(2)->controller().
378 GetLastCommittedEntry()->url().path()); 369 GetLastCommittedEntry()->url().path());
379 EXPECT_EQ(browser()->GetTabContentsAt(1)->render_view_host()->process(), 370 EXPECT_EQ(browser()->GetTabContentsAt(1)->render_view_host()->process(),
380 browser()->GetTabContentsAt(2)->render_view_host()->process()); 371 browser()->GetTabContentsAt(2)->render_view_host()->process());
381 } 372 }
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 &browser()->GetSelectedTabContentsWrapper()->tab_contents()-> 645 &browser()->GetSelectedTabContentsWrapper()->tab_contents()->
655 controller())); 646 controller()));
656 browser()->Reload(CURRENT_TAB); 647 browser()->Reload(CURRENT_TAB);
657 observer.Wait(); 648 observer.Wait();
658 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( 649 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
659 contents->render_view_host(), L"", 650 contents->render_view_host(), L"",
660 L"window.domAutomationController.send(chrome.app.isInstalled)", 651 L"window.domAutomationController.send(chrome.app.isInstalled)",
661 &is_installed)); 652 &is_installed));
662 ASSERT_TRUE(is_installed); 653 ASSERT_TRUE(is_installed);
663 } 654 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/tab_contents/render_view_host_delegate_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698