| 
									
										
										
										
											2016-08-19 08:47:32 -03:00
										 |  |  | // Copyright (c) 2016 GitHub, Inc.
 | 
					
						
							|  |  |  | // Use of this source code is governed by the MIT license that can be
 | 
					
						
							|  |  |  | // found in the LICENSE file.
 | 
					
						
							|  |  |  | #ifndef ATOM_RENDERER_ATOM_SANDBOXED_RENDERER_CLIENT_H_
 | 
					
						
							|  |  |  | #define ATOM_RENDERER_ATOM_SANDBOXED_RENDERER_CLIENT_H_
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-12 19:25:56 -05:00
										 |  |  | #include <memory>
 | 
					
						
							| 
									
										
										
										
											2019-03-07 19:00:28 -05:00
										 |  |  | #include <set>
 | 
					
						
							| 
									
										
										
										
											2016-08-21 07:30:21 -03:00
										 |  |  | #include <string>
 | 
					
						
							|  |  |  | #include <vector>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-27 18:31:18 -03:00
										 |  |  | #include "atom/renderer/renderer_client_base.h"
 | 
					
						
							| 
									
										
										
										
											2018-08-21 20:05:45 +02:00
										 |  |  | #include "base/process/process_metrics.h"
 | 
					
						
							| 
									
										
										
										
											2016-08-19 08:47:32 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace atom { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-27 18:31:18 -03:00
										 |  |  | class AtomSandboxedRendererClient : public RendererClientBase { | 
					
						
							| 
									
										
										
										
											2016-08-19 08:47:32 -03:00
										 |  |  |  public: | 
					
						
							|  |  |  |   AtomSandboxedRendererClient(); | 
					
						
							| 
									
										
										
										
											2018-04-17 16:03:51 -07:00
										 |  |  |   ~AtomSandboxedRendererClient() override; | 
					
						
							| 
									
										
										
										
											2016-08-19 08:47:32 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-21 20:05:45 +02:00
										 |  |  |   void InitializeBindings(v8::Local<v8::Object> binding, | 
					
						
							| 
									
										
										
										
											2019-01-22 11:24:46 -08:00
										 |  |  |                           v8::Local<v8::Context> context, | 
					
						
							|  |  |  |                           bool is_main_frame); | 
					
						
							| 
									
										
										
										
											2017-04-08 10:58:13 -03:00
										 |  |  |   // atom::RendererClientBase:
 | 
					
						
							| 
									
										
										
										
											2018-04-17 21:44:10 -04:00
										 |  |  |   void DidCreateScriptContext(v8::Handle<v8::Context> context, | 
					
						
							|  |  |  |                               content::RenderFrame* render_frame) override; | 
					
						
							|  |  |  |   void WillReleaseScriptContext(v8::Handle<v8::Context> context, | 
					
						
							|  |  |  |                                 content::RenderFrame* render_frame) override; | 
					
						
							| 
									
										
										
										
											2018-12-14 06:25:12 +09:00
										 |  |  |   void SetupMainWorldOverrides(v8::Handle<v8::Context> context, | 
					
						
							| 
									
										
										
										
											2019-01-22 02:08:16 +01:00
										 |  |  |                                content::RenderFrame* render_frame) override; | 
					
						
							| 
									
										
										
										
											2019-03-11 19:27:57 -04:00
										 |  |  |   void SetupExtensionWorldOverrides(v8::Handle<v8::Context> context, | 
					
						
							|  |  |  |                                     content::RenderFrame* render_frame, | 
					
						
							|  |  |  |                                     int world_id) override; | 
					
						
							| 
									
										
										
										
											2016-08-21 07:30:21 -03:00
										 |  |  |   // content::ContentRendererClient:
 | 
					
						
							|  |  |  |   void RenderFrameCreated(content::RenderFrame*) override; | 
					
						
							|  |  |  |   void RenderViewCreated(content::RenderView*) override; | 
					
						
							| 
									
										
										
										
											2019-03-07 19:00:28 -05:00
										 |  |  |   void RunScriptsAtDocumentStart(content::RenderFrame* render_frame) override; | 
					
						
							|  |  |  |   void RunScriptsAtDocumentEnd(content::RenderFrame* render_frame) override; | 
					
						
							| 
									
										
										
										
											2016-08-21 07:30:21 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-19 08:47:32 -03:00
										 |  |  |  private: | 
					
						
							| 
									
										
										
										
											2018-08-21 20:05:45 +02:00
										 |  |  |   std::unique_ptr<base::ProcessMetrics> metrics_; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-07 19:00:28 -05:00
										 |  |  |   // Getting main script context from web frame would lazily initializes
 | 
					
						
							|  |  |  |   // its script context. Doing so in a web page without scripts would trigger
 | 
					
						
							|  |  |  |   // assertion, so we have to keep a book of injected web frames.
 | 
					
						
							|  |  |  |   std::set<content::RenderFrame*> injected_frames_; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-19 08:47:32 -03:00
										 |  |  |   DISALLOW_COPY_AND_ASSIGN(AtomSandboxedRendererClient); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }  // namespace atom
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif  // ATOM_RENDERER_ATOM_SANDBOXED_RENDERER_CLIENT_H_
 |