diff options
author | fsamuel@chromium.org <fsamuel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-02 21:47:07 +0000 |
---|---|---|
committer | fsamuel@chromium.org <fsamuel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-02 21:47:07 +0000 |
commit | 08dbb8be49a96fb2dc27e2a49488105d470c7bbe (patch) | |
tree | 651c2ac63081e1c6cc107908655886e47ae5fa9e /chrome | |
parent | 421fd14402ad720e3a248af741138436da982560 (diff) | |
download | chromium_src-08dbb8be49a96fb2dc27e2a49488105d470c7bbe.zip chromium_src-08dbb8be49a96fb2dc27e2a49488105d470c7bbe.tar.gz chromium_src-08dbb8be49a96fb2dc27e2a49488105d470c7bbe.tar.bz2 |
<webview>: Restore getProcessId()
It seems I broke getProcessId() in the refactorings. This CL
restores getProcessId().
BUG=166165
Test=WebViewTest.Shim_TestGetProcessId
Review URL: https://chromiumcodereview.appspot.com/18272002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@209780 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
8 files changed, 48 insertions, 15 deletions
diff --git a/chrome/browser/extensions/web_view_browsertest.cc b/chrome/browser/extensions/web_view_browsertest.cc index c81aefb..43108cf 100644 --- a/chrome/browser/extensions/web_view_browsertest.cc +++ b/chrome/browser/extensions/web_view_browsertest.cc @@ -559,6 +559,13 @@ IN_PROC_BROWSER_TEST_F(WebViewTest, Shim_TestWebRequestAPI) { "web_view/shim"); } +IN_PROC_BROWSER_TEST_F(WebViewTest, Shim_TestGetProcessId) { + TestHelper("testGetProcessId", + "DoneShimTest.PASSED", + "DoneShimTest.FAILED", + "web_view/shim"); +} + IN_PROC_BROWSER_TEST_F(WebViewTest, ShimSrcAttribute) { ASSERT_TRUE(RunPlatformAppTest("platform_apps/web_view/src_attribute")) << message_; diff --git a/chrome/browser/guestview/guestview_constants.cc b/chrome/browser/guestview/guestview_constants.cc index a8e5d07..3659bec 100644 --- a/chrome/browser/guestview/guestview_constants.cc +++ b/chrome/browser/guestview/guestview_constants.cc @@ -10,10 +10,6 @@ namespace guestview { const char kIsTopLevel[] = "isTopLevel"; const char kUrl[] = "url"; -// Internal parameters/properties on events. -const char kInternalCurrentEntryIndex[] = "currentEntryIndex"; -const char kInternalEntryCount[] = "entryCount"; - // Attributes. const char kAttributeApi[] = "api"; diff --git a/chrome/browser/guestview/guestview_constants.h b/chrome/browser/guestview/guestview_constants.h index 607d19c..70a09a5 100644 --- a/chrome/browser/guestview/guestview_constants.h +++ b/chrome/browser/guestview/guestview_constants.h @@ -13,10 +13,6 @@ namespace guestview { extern const char kIsTopLevel[]; extern const char kUrl[]; -// Internal parameters/properties on events. -extern const char kInternalCurrentEntryIndex[]; -extern const char kInternalEntryCount[]; - // Attributes. extern const char kAttributeApi[]; diff --git a/chrome/browser/guestview/webview/webview_constants.cc b/chrome/browser/guestview/webview/webview_constants.cc index acc25ca..c082175 100644 --- a/chrome/browser/guestview/webview/webview_constants.cc +++ b/chrome/browser/guestview/webview/webview_constants.cc @@ -11,4 +11,9 @@ const char kEventContentLoad[] = "webview.onContentLoad"; const char kEventLoadCommit[] = "webview.onLoadCommit"; const char kEventLoadStop[] = "webview.onLoadStop"; +// Internal parameters/properties on events. +const char kInternalCurrentEntryIndex[] = "currentEntryIndex"; +const char kInternalEntryCount[] = "entryCount"; +const char kInternalProcessId[] = "processId"; + } // namespace webview diff --git a/chrome/browser/guestview/webview/webview_constants.h b/chrome/browser/guestview/webview/webview_constants.h index 8be7839..5329f740 100644 --- a/chrome/browser/guestview/webview/webview_constants.h +++ b/chrome/browser/guestview/webview/webview_constants.h @@ -14,6 +14,11 @@ extern const char kEventContentLoad[]; extern const char kEventLoadCommit[]; extern const char kEventLoadStop[]; +// Internal parameters/properties on events. +extern const char kInternalCurrentEntryIndex[]; +extern const char kInternalEntryCount[]; +extern const char kInternalProcessId[]; + } // namespace webview #endif // CHROME_BROWSER_GUESTVIEW_WEBVIEW_WEBVIEW_CONSTANTS_H_ diff --git a/chrome/browser/guestview/webview/webview_guest.cc b/chrome/browser/guestview/webview/webview_guest.cc index d581551..b14b3fd 100644 --- a/chrome/browser/guestview/webview/webview_guest.cc +++ b/chrome/browser/guestview/webview/webview_guest.cc @@ -106,10 +106,12 @@ void WebViewGuest::DidCommitProvisionalLoadForFrame( scoped_ptr<DictionaryValue> args(new DictionaryValue()); args->SetString(guestview::kUrl, url.spec()); args->SetBoolean(guestview::kIsTopLevel, is_main_frame); - args->SetInteger(guestview::kInternalCurrentEntryIndex, + args->SetInteger(webview::kInternalCurrentEntryIndex, web_contents()->GetController().GetCurrentEntryIndex()); - args->SetInteger(guestview::kInternalEntryCount, + args->SetInteger(webview::kInternalEntryCount, web_contents()->GetController().GetEntryCount()); + args->SetInteger(webview::kInternalProcessId, + web_contents()->GetRenderProcessHost()->GetID()); DispatchEvent(new GuestView::Event(webview::kEventLoadCommit, args.Pass())); } diff --git a/chrome/renderer/resources/extensions/web_view.js b/chrome/renderer/resources/extensions/web_view.js index 91325a7..b0439eb 100644 --- a/chrome/renderer/resources/extensions/web_view.js +++ b/chrome/renderer/resources/extensions/web_view.js @@ -18,7 +18,6 @@ var WEB_VIEW_ATTRIBUTES = ['name', 'src', 'partition', 'autosize', 'minheight', // All exposed api methods for <webview>, these are forwarded to the browser // plugin. var WEB_VIEW_API_METHODS = [ - 'getProcessId', 'reload', 'stop', 'terminate' @@ -51,9 +50,10 @@ var WEB_VIEW_EXT_EVENTS = { fields: [] }, 'loadcommit': { - customHandler: function(WebView, event) { - WebView.currentEntryIndex_ = event.currentEntryIndex; - WebView.entryCount_ = event.entryCount; + customHandler: function(webview, event) { + webview.currentEntryIndex_ = event.currentEntryIndex; + webview.entryCount_ = event.entryCount; + webview.processId_ = event.processId; }, evt: loadCommitEvent, fields: ['url', 'isTopLevel'] @@ -90,6 +90,9 @@ WebView.prototype.entryCount_; /** @type {number} */ WebView.prototype.currentEntryIndex_; +/** @type {number} */ +WebView.prototype.processId_; + /** * @constructor */ @@ -187,6 +190,10 @@ WebView.prototype.setupWebviewNodeMethods_ = function() { webviewNode.go(1); }; + webviewNode['getProcessId'] = function() { + return self.processId_; + }; + webviewNode['go'] = function(relativeIndex) { var instanceId = browserPluginNode.getGuestInstanceId(); if (!instanceId) diff --git a/chrome/test/data/extensions/platform_apps/web_view/shim/main.js b/chrome/test/data/extensions/platform_apps/web_view/shim/main.js index 1cd6e6b..980fff1 100644 --- a/chrome/test/data/extensions/platform_apps/web_view/shim/main.js +++ b/chrome/test/data/extensions/platform_apps/web_view/shim/main.js @@ -498,6 +498,20 @@ function testWebRequestAPI() { document.body.appendChild(webview); } +// This test verifies that getProcessId is defined and returns a non-zero +// value corresponding to the processId of the guest process. +function testGetProcessId() { + var webview = document.createElement('webview'); + webview.setAttribute('src', 'data:text/html,trigger navigation'); + var firstLoad = function() { + webview.removeEventListener('loadstop', firstLoad); + embedder.test.assertTrue(webview.getProcessId() > 0); + embedder.test.succeed(); + }; + webview.addEventListener('loadstop', firstLoad); + document.body.appendChild(webview); +} + embedder.test.testList = { 'testSize': testSize, 'testAPIMethodExistence': testAPIMethodExistence, @@ -516,7 +530,8 @@ embedder.test.testList = { 'testNewWindowNoPreventDefault': testNewWindowNoPreventDefault, 'testNewWindowNoReferrerLink': testNewWindowNoReferrerLink, 'testContentLoadEvent': testContentLoadEvent, - 'testWebRequestAPI': testWebRequestAPI + 'testWebRequestAPI': testWebRequestAPI, + 'testGetProcessId': testGetProcessId }; onload = function() { |