diff --git a/atom/browser/lib/guest-view-manager.coffee b/atom/browser/lib/guest-view-manager.coffee index 3dda909cae66..51419f63b212 100644 --- a/atom/browser/lib/guest-view-manager.coffee +++ b/atom/browser/lib/guest-view-manager.coffee @@ -54,3 +54,7 @@ ipc.on 'ATOM_SHELL_GUEST_VIEW_MANAGER_SET_AUTO_SIZE', (event, id, params) -> ipc.on 'ATOM_SHELL_GUEST_VIEW_MANAGER_SET_ALLOW_TRANSPARENCY', (event, id, allowtransparency) -> guestInstances[id]?.setAllowTransparency allowtransparency + +# Returns WebContents from its guest id. +exports.getGuest = (id) -> + guestInstances[id] diff --git a/atom/browser/lib/rpc-server.coffee b/atom/browser/lib/rpc-server.coffee index 95d30f366a01..bc73bbae3a5c 100644 --- a/atom/browser/lib/rpc-server.coffee +++ b/atom/browser/lib/rpc-server.coffee @@ -157,3 +157,10 @@ ipc.on 'ATOM_BROWSER_MEMBER_GET', (event, id, name) -> ipc.on 'ATOM_BROWSER_DEREFERENCE', (event, storeId) -> objectsRegistry.remove event.sender.getId(), storeId + +ipc.on 'ATOM_BROWSER_GUEST_WEB_CONTENTS', (event, guestInstanceId) -> + try + guestViewManager = require './guest-view-manager' + event.returnValue = valueToMeta event.sender, guestViewManager.getGuest(guestInstanceId) + catch e + event.returnValue = errorToMeta e diff --git a/atom/renderer/api/lib/remote.coffee b/atom/renderer/api/lib/remote.coffee index 07b06001038a..f35d7abc52f5 100644 --- a/atom/renderer/api/lib/remote.coffee +++ b/atom/renderer/api/lib/remote.coffee @@ -129,3 +129,8 @@ exports.createFunctionWithReturnValue = (returnValue) -> func = -> returnValue v8Util.setHiddenValue func, 'returnValue', true func + +# Get the guest WebContents from guestInstanceId. +exports.getGuestWebContents = (guestInstanceId) -> + meta = ipc.sendChannelSync 'ATOM_BROWSER_GUEST_WEB_CONTENTS', guestInstanceId + metaToValue meta diff --git a/atom/renderer/lib/web-view.coffee b/atom/renderer/lib/web-view.coffee index 751304b3893a..aeb7f1ee5a69 100644 --- a/atom/renderer/lib/web-view.coffee +++ b/atom/renderer/lib/web-view.coffee @@ -1,6 +1,7 @@ v8Util = process.atomBinding 'v8_util' guestViewInternal = require './guest-view-internal' webFrame = require 'web-frame' +remote = require 'remote' # ID generator. nextId = 0 @@ -357,8 +358,7 @@ class WebView return # Navigate to |this.src|. - # FIXME - # WebViewInternal.navigate @guestInstanceId, @src + remote.getGuestWebContents(@guestInstanceId).loadUrl @src parseAttributes: -> return unless @elementAttached