Add remote.createFunctionWithReturnValue API.
This commit is contained in:
		
					parent
					
						
							
								d88676bf65
							
						
					
				
			
			
				commit
				
					
						c86acc4cd7
					
				
			
		
					 5 changed files with 33 additions and 3 deletions
				
			
		|  | @ -44,10 +44,13 @@ unwrapArgs = (processId, routingId, args) -> | |||
|       when 'remote-object' then objectsRegistry.get meta.id | ||||
|       when 'array' then unwrapArgs processId, routingId, meta.value | ||||
|       when 'object' | ||||
|         ret = {} | ||||
|         ret = v8Util.createObjectWithName meta.name | ||||
|         for member in meta.members | ||||
|           ret[member.name] = metaToValue(member.value) | ||||
|         ret | ||||
|       when 'function-with-return-value' | ||||
|         returnValue = metaToValue meta.value | ||||
|         -> returnValue | ||||
|       when 'function' | ||||
|         ret = -> | ||||
|           ipc.sendChannel processId, routingId, 'ATOM_RENDERER_CALLBACK', meta.id, valueToMeta(processId, routingId, arguments) | ||||
|  |  | |||
|  | @ -13,9 +13,11 @@ wrapArgs = (args) -> | |||
|     else if value? and typeof value is 'object' and v8Util.getHiddenValue value, 'atomId' | ||||
|       type: 'remote-object', id: v8Util.getHiddenValue value, 'atomId' | ||||
|     else if value? and typeof value is 'object' | ||||
|       ret = type: 'object', members: [] | ||||
|       ret = type: 'object', name: value.constructor.name, members: [] | ||||
|       ret.members.push(name: prop, value: valueToMeta(field)) for prop, field of value | ||||
|       ret | ||||
|     else if typeof value is 'function' and v8Util.getHiddenValue value, 'returnValue' | ||||
|       type: 'function-with-return-value', value: valueToMeta(value()) | ||||
|     else if typeof value is 'function' | ||||
|       type: 'function', id: callbacksRegistry.add(value) | ||||
|     else | ||||
|  | @ -121,3 +123,9 @@ processCache = null | |||
| exports.__defineGetter__ 'process', -> | ||||
|   processCache = exports.getGlobal('process') unless processCache? | ||||
|   processCache | ||||
| 
 | ||||
| # Create a funtion that will return the specifed value when called in browser. | ||||
| exports.createFunctionWithReturnValue = (returnValue) -> | ||||
|   func = -> returnValue | ||||
|   v8Util.setHiddenValue func, 'returnValue', true | ||||
|   func | ||||
|  |  | |||
|  | @ -16,7 +16,14 @@ describe 'ipc', -> | |||
|       a = remote.require path.join(fixtures, 'module', 'id.js') | ||||
|       assert.equal a.id, 1127 | ||||
| 
 | ||||
|   describe 'remote object', -> | ||||
|   describe 'remote.createFunctionWithReturnValue', -> | ||||
|     it 'should be called in browser synchronously', -> | ||||
|       buf = new Buffer('test') | ||||
|       call = remote.require path.join(fixtures, 'module', 'call.js') | ||||
|       result = call.call remote.createFunctionWithReturnValue(buf) | ||||
|       assert.equal result.constructor.name, 'Buffer' | ||||
| 
 | ||||
|   describe 'remote object in renderer', -> | ||||
|     it 'can change its properties', -> | ||||
|       property = remote.require path.join(fixtures, 'module', 'property.js') | ||||
|       assert.equal property.property, 1127 | ||||
|  | @ -28,6 +35,12 @@ describe 'ipc', -> | |||
|       # Restore. | ||||
|       property.property = 1127 | ||||
| 
 | ||||
|   describe 'remote value in browser', -> | ||||
|     it 'keeps its constructor name for objects', -> | ||||
|       buf = new Buffer('test') | ||||
|       print_name = remote.require path.join(fixtures, 'module', 'print_name.js') | ||||
|       assert.equal print_name.print(buf), 'Buffer' | ||||
| 
 | ||||
|   describe 'ipc.send', -> | ||||
|     it 'should work when sending an object containing id property', (done) -> | ||||
|       obj = id: 1, name: 'ly' | ||||
|  |  | |||
							
								
								
									
										3
									
								
								spec/fixtures/module/call.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								spec/fixtures/module/call.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| exports.call = function(func) { | ||||
|   return func(); | ||||
| } | ||||
							
								
								
									
										3
									
								
								spec/fixtures/module/print_name.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								spec/fixtures/module/print_name.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| exports.print = function(obj) { | ||||
|   return obj.constructor.name; | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Cheng Zhao
				Cheng Zhao