forked from mirrors/gecko-dev
		
	 4a7ee4c9c4
			
		
	
	
		4a7ee4c9c4
		
	
	
	
	
		
			
			The method `Telemetry.getUntrustedModuleLoadEvents()` used to move data, meaning once it was called, the returned data was removed from the application so that the same data would never be returned again. To show third-party modules info on about:support, we need to keep data even after it's submitted as telemetry. At the same time, we need to know which loading events have been submitted and which have not. With this patch UntrustedModulesBackupService holds two storages named "Staging" and "Settled" respectively. To achieve the behavior described earlier, we use the "Staging" to keep instances not yet submitted, and "Settled" to keep instances already submitted. This patch also introduces two flags `INCLUDE_OLD_LOADEVENTS` and `KEEP_LOADEVENTS_NEW` under `nsITelemetry`, with which the caller of `getUntrustedModuleLoadEvents()` can control which instances to be returned and how the returned instances are kept internally. Differential Revision: https://phabricator.services.mozilla.com/D93829
		
			
				
	
	
		
			31 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 | |
| /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 | |
| /* This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | |
| 
 | |
| #ifndef telemetry_UntrustedModules_h__
 | |
| #define telemetry_UntrustedModules_h__
 | |
| 
 | |
| #include "jsapi.h"
 | |
| #include "mozilla/dom/Promise.h"
 | |
| 
 | |
| namespace mozilla {
 | |
| namespace Telemetry {
 | |
| 
 | |
| /**
 | |
|  * This function returns a promise that asynchronously processes and gathers
 | |
|  * untrusted module data. The promise is either resolved with the JS object
 | |
|  * ping payload, or is rejected upon failure.
 | |
|  *
 | |
|  * @param aFlags [in] Combinations of the flags defined under nsITelemetry.
 | |
|  *               (See "Flags for getUntrustedModuleLoadEvents"
 | |
|  *                in nsITelemetry.idl)
 | |
|  */
 | |
| nsresult GetUntrustedModuleLoadEvents(uint32_t aFlags, JSContext* cx,
 | |
|                                       dom::Promise** aPromise);
 | |
| 
 | |
| }  // namespace Telemetry
 | |
| }  // namespace mozilla
 | |
| 
 | |
| #endif  // telemetry_UntrustedModules_h__
 |