Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
michael@0 | 1 | /* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 8 -*- */ |
michael@0 | 2 | /* vim: set sw=4 ts=8 et tw=80 ft=cpp : */ |
michael@0 | 3 | /* This Source Code Form is subject to the terms of the Mozilla Public |
michael@0 | 4 | * License, v. 2.0. If a copy of the MPL was not distributed with this |
michael@0 | 5 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
michael@0 | 6 | |
michael@0 | 7 | include protocol PAsmJSCacheEntry; |
michael@0 | 8 | include protocol PBackground; |
michael@0 | 9 | include protocol PBlob; |
michael@0 | 10 | include protocol PBluetooth; |
michael@0 | 11 | include protocol PBrowser; |
michael@0 | 12 | include protocol PCompositor; |
michael@0 | 13 | include protocol PCrashReporter; |
michael@0 | 14 | include protocol PExternalHelperApp; |
michael@0 | 15 | include protocol PDeviceStorageRequest; |
michael@0 | 16 | include protocol PFileDescriptorSet; |
michael@0 | 17 | include protocol PFMRadio; |
michael@0 | 18 | include protocol PFileSystemRequest; |
michael@0 | 19 | include protocol PHal; |
michael@0 | 20 | include protocol PImageBridge; |
michael@0 | 21 | include protocol PIndexedDB; |
michael@0 | 22 | include protocol PMemoryReportRequest; |
michael@0 | 23 | include protocol PNecko; |
michael@0 | 24 | include protocol PSms; |
michael@0 | 25 | include protocol PSpeechSynthesis; |
michael@0 | 26 | include protocol PStorage; |
michael@0 | 27 | include protocol PTelephony; |
michael@0 | 28 | include protocol PTestShell; |
michael@0 | 29 | include protocol PJavaScript; |
michael@0 | 30 | include DOMTypes; |
michael@0 | 31 | include JavaScriptTypes; |
michael@0 | 32 | include InputStreamParams; |
michael@0 | 33 | include PTabContext; |
michael@0 | 34 | include URIParams; |
michael@0 | 35 | include ProtocolTypes; |
michael@0 | 36 | |
michael@0 | 37 | using GeoPosition from "nsGeoPositionIPCSerialiser.h"; |
michael@0 | 38 | |
michael@0 | 39 | using struct ChromePackage from "mozilla/chrome/RegistryMessageUtils.h"; |
michael@0 | 40 | using struct ResourceMapping from "mozilla/chrome/RegistryMessageUtils.h"; |
michael@0 | 41 | using struct OverrideMapping from "mozilla/chrome/RegistryMessageUtils.h"; |
michael@0 | 42 | using base::ChildPrivileges from "base/process_util.h"; |
michael@0 | 43 | using struct IPC::Permission from "mozilla/net/NeckoMessageUtils.h"; |
michael@0 | 44 | using class IPC::Principal from "mozilla/dom/PermissionMessageUtils.h"; |
michael@0 | 45 | using struct mozilla::null_t from "ipc/IPCMessageUtils.h"; |
michael@0 | 46 | using struct mozilla::void_t from "ipc/IPCMessageUtils.h"; |
michael@0 | 47 | using mozilla::dom::asmjscache::OpenMode from "mozilla/dom/asmjscache/AsmJSCache.h"; |
michael@0 | 48 | using mozilla::dom::asmjscache::WriteParams from "mozilla/dom/asmjscache/AsmJSCache.h"; |
michael@0 | 49 | using mozilla::dom::AudioChannel from "mozilla/dom/AudioChannelBinding.h"; |
michael@0 | 50 | using mozilla::dom::AudioChannelState from "AudioChannelCommon.h"; |
michael@0 | 51 | using mozilla::dom::NativeThreadId from "mozilla/dom/TabMessageUtils.h"; |
michael@0 | 52 | using mozilla::hal::ProcessPriority from "mozilla/HalTypes.h"; |
michael@0 | 53 | using gfxIntSize from "nsSize.h"; |
michael@0 | 54 | |
michael@0 | 55 | namespace mozilla { |
michael@0 | 56 | namespace dom { |
michael@0 | 57 | |
michael@0 | 58 | struct FontListEntry { |
michael@0 | 59 | nsString familyName; |
michael@0 | 60 | nsString faceName; |
michael@0 | 61 | nsCString filepath; |
michael@0 | 62 | uint16_t weight; |
michael@0 | 63 | int16_t stretch; |
michael@0 | 64 | uint8_t italic; |
michael@0 | 65 | uint8_t index; |
michael@0 | 66 | }; |
michael@0 | 67 | |
michael@0 | 68 | struct DeviceStorageFreeSpaceParams |
michael@0 | 69 | { |
michael@0 | 70 | nsString type; |
michael@0 | 71 | nsString storageName; |
michael@0 | 72 | }; |
michael@0 | 73 | |
michael@0 | 74 | struct DeviceStorageUsedSpaceParams |
michael@0 | 75 | { |
michael@0 | 76 | nsString type; |
michael@0 | 77 | nsString storageName; |
michael@0 | 78 | }; |
michael@0 | 79 | |
michael@0 | 80 | struct DeviceStorageAvailableParams |
michael@0 | 81 | { |
michael@0 | 82 | nsString type; |
michael@0 | 83 | nsString storageName; |
michael@0 | 84 | }; |
michael@0 | 85 | |
michael@0 | 86 | struct DeviceStorageStatusParams |
michael@0 | 87 | { |
michael@0 | 88 | nsString type; |
michael@0 | 89 | nsString storageName; |
michael@0 | 90 | }; |
michael@0 | 91 | |
michael@0 | 92 | struct DeviceStorageFormatParams |
michael@0 | 93 | { |
michael@0 | 94 | nsString type; |
michael@0 | 95 | nsString storageName; |
michael@0 | 96 | }; |
michael@0 | 97 | |
michael@0 | 98 | struct DeviceStorageMountParams |
michael@0 | 99 | { |
michael@0 | 100 | nsString type; |
michael@0 | 101 | nsString storageName; |
michael@0 | 102 | }; |
michael@0 | 103 | |
michael@0 | 104 | struct DeviceStorageUnmountParams |
michael@0 | 105 | { |
michael@0 | 106 | nsString type; |
michael@0 | 107 | nsString storageName; |
michael@0 | 108 | }; |
michael@0 | 109 | |
michael@0 | 110 | struct DeviceStorageAddParams |
michael@0 | 111 | { |
michael@0 | 112 | nsString type; |
michael@0 | 113 | nsString storageName; |
michael@0 | 114 | nsString relpath; |
michael@0 | 115 | PBlob blob; |
michael@0 | 116 | }; |
michael@0 | 117 | |
michael@0 | 118 | struct DeviceStorageCreateFdParams |
michael@0 | 119 | { |
michael@0 | 120 | nsString type; |
michael@0 | 121 | nsString storageName; |
michael@0 | 122 | nsString relpath; |
michael@0 | 123 | }; |
michael@0 | 124 | |
michael@0 | 125 | struct DeviceStorageGetParams |
michael@0 | 126 | { |
michael@0 | 127 | nsString type; |
michael@0 | 128 | nsString storageName; |
michael@0 | 129 | nsString rootDir; |
michael@0 | 130 | nsString relpath; |
michael@0 | 131 | }; |
michael@0 | 132 | |
michael@0 | 133 | struct DeviceStorageDeleteParams |
michael@0 | 134 | { |
michael@0 | 135 | nsString type; |
michael@0 | 136 | nsString storageName; |
michael@0 | 137 | nsString relpath; |
michael@0 | 138 | }; |
michael@0 | 139 | |
michael@0 | 140 | struct DeviceStorageEnumerationParams |
michael@0 | 141 | { |
michael@0 | 142 | nsString type; |
michael@0 | 143 | nsString storageName; |
michael@0 | 144 | nsString rootdir; |
michael@0 | 145 | uint64_t since; |
michael@0 | 146 | }; |
michael@0 | 147 | |
michael@0 | 148 | union DeviceStorageParams |
michael@0 | 149 | { |
michael@0 | 150 | DeviceStorageAddParams; |
michael@0 | 151 | DeviceStorageCreateFdParams; |
michael@0 | 152 | DeviceStorageGetParams; |
michael@0 | 153 | DeviceStorageDeleteParams; |
michael@0 | 154 | DeviceStorageEnumerationParams; |
michael@0 | 155 | DeviceStorageFreeSpaceParams; |
michael@0 | 156 | DeviceStorageUsedSpaceParams; |
michael@0 | 157 | DeviceStorageAvailableParams; |
michael@0 | 158 | DeviceStorageStatusParams; |
michael@0 | 159 | DeviceStorageFormatParams; |
michael@0 | 160 | DeviceStorageMountParams; |
michael@0 | 161 | DeviceStorageUnmountParams; |
michael@0 | 162 | }; |
michael@0 | 163 | |
michael@0 | 164 | struct FMRadioRequestEnableParams |
michael@0 | 165 | { |
michael@0 | 166 | double frequency; |
michael@0 | 167 | }; |
michael@0 | 168 | |
michael@0 | 169 | struct FMRadioRequestDisableParams |
michael@0 | 170 | { |
michael@0 | 171 | |
michael@0 | 172 | }; |
michael@0 | 173 | |
michael@0 | 174 | struct FMRadioRequestSetFrequencyParams |
michael@0 | 175 | { |
michael@0 | 176 | double frequency; |
michael@0 | 177 | }; |
michael@0 | 178 | |
michael@0 | 179 | struct FMRadioRequestSeekParams |
michael@0 | 180 | { |
michael@0 | 181 | bool upward; |
michael@0 | 182 | }; |
michael@0 | 183 | |
michael@0 | 184 | struct FMRadioRequestCancelSeekParams |
michael@0 | 185 | { |
michael@0 | 186 | |
michael@0 | 187 | }; |
michael@0 | 188 | |
michael@0 | 189 | union FMRadioRequestParams |
michael@0 | 190 | { |
michael@0 | 191 | FMRadioRequestEnableParams; |
michael@0 | 192 | FMRadioRequestDisableParams; |
michael@0 | 193 | FMRadioRequestSetFrequencyParams; |
michael@0 | 194 | FMRadioRequestSeekParams; |
michael@0 | 195 | FMRadioRequestCancelSeekParams; |
michael@0 | 196 | }; |
michael@0 | 197 | |
michael@0 | 198 | struct FileSystemCreateDirectoryParams |
michael@0 | 199 | { |
michael@0 | 200 | nsString filesystem; |
michael@0 | 201 | nsString realPath; |
michael@0 | 202 | }; |
michael@0 | 203 | |
michael@0 | 204 | union FileSystemFileDataValue |
michael@0 | 205 | { |
michael@0 | 206 | uint8_t[]; |
michael@0 | 207 | PBlob; |
michael@0 | 208 | }; |
michael@0 | 209 | |
michael@0 | 210 | struct FileSystemCreateFileParams |
michael@0 | 211 | { |
michael@0 | 212 | nsString filesystem; |
michael@0 | 213 | nsString realPath; |
michael@0 | 214 | FileSystemFileDataValue data; |
michael@0 | 215 | bool replace; |
michael@0 | 216 | }; |
michael@0 | 217 | |
michael@0 | 218 | struct FileSystemGetFileOrDirectoryParams |
michael@0 | 219 | { |
michael@0 | 220 | nsString filesystem; |
michael@0 | 221 | nsString realPath; |
michael@0 | 222 | }; |
michael@0 | 223 | |
michael@0 | 224 | union FileSystemPathOrFileValue |
michael@0 | 225 | { |
michael@0 | 226 | nsString; |
michael@0 | 227 | PBlob; |
michael@0 | 228 | }; |
michael@0 | 229 | |
michael@0 | 230 | struct FileSystemRemoveParams |
michael@0 | 231 | { |
michael@0 | 232 | nsString filesystem; |
michael@0 | 233 | nsString directory; |
michael@0 | 234 | FileSystemPathOrFileValue target; |
michael@0 | 235 | bool recursive; |
michael@0 | 236 | }; |
michael@0 | 237 | |
michael@0 | 238 | union FileSystemParams |
michael@0 | 239 | { |
michael@0 | 240 | FileSystemCreateDirectoryParams; |
michael@0 | 241 | FileSystemCreateFileParams; |
michael@0 | 242 | FileSystemGetFileOrDirectoryParams; |
michael@0 | 243 | FileSystemRemoveParams; |
michael@0 | 244 | }; |
michael@0 | 245 | |
michael@0 | 246 | union PrefValue { |
michael@0 | 247 | nsCString; |
michael@0 | 248 | int32_t; |
michael@0 | 249 | bool; |
michael@0 | 250 | }; |
michael@0 | 251 | |
michael@0 | 252 | union MaybePrefValue { |
michael@0 | 253 | PrefValue; |
michael@0 | 254 | null_t; |
michael@0 | 255 | }; |
michael@0 | 256 | |
michael@0 | 257 | struct PrefSetting { |
michael@0 | 258 | nsCString name; |
michael@0 | 259 | MaybePrefValue defaultValue; |
michael@0 | 260 | MaybePrefValue userValue; |
michael@0 | 261 | }; |
michael@0 | 262 | |
michael@0 | 263 | intr protocol PContent |
michael@0 | 264 | { |
michael@0 | 265 | parent opens PCompositor; |
michael@0 | 266 | parent opens PImageBridge; |
michael@0 | 267 | child opens PBackground; |
michael@0 | 268 | |
michael@0 | 269 | manages PAsmJSCacheEntry; |
michael@0 | 270 | manages PBlob; |
michael@0 | 271 | manages PBluetooth; |
michael@0 | 272 | manages PBrowser; |
michael@0 | 273 | manages PCrashReporter; |
michael@0 | 274 | manages PDeviceStorageRequest; |
michael@0 | 275 | manages PFileSystemRequest; |
michael@0 | 276 | manages PExternalHelperApp; |
michael@0 | 277 | manages PFileDescriptorSet; |
michael@0 | 278 | manages PFMRadio; |
michael@0 | 279 | manages PHal; |
michael@0 | 280 | manages PIndexedDB; |
michael@0 | 281 | manages PMemoryReportRequest; |
michael@0 | 282 | manages PNecko; |
michael@0 | 283 | manages PSms; |
michael@0 | 284 | manages PSpeechSynthesis; |
michael@0 | 285 | manages PStorage; |
michael@0 | 286 | manages PTelephony; |
michael@0 | 287 | manages PTestShell; |
michael@0 | 288 | manages PJavaScript; |
michael@0 | 289 | |
michael@0 | 290 | both: |
michael@0 | 291 | // Depending on exactly how the new browser is being created, it might be |
michael@0 | 292 | // created from either the child or parent process! |
michael@0 | 293 | // |
michael@0 | 294 | // The child creates the PBrowser as part of |
michael@0 | 295 | // TabChild::BrowserFrameProvideWindow (which happens when the child's |
michael@0 | 296 | // content calls window.open()), and the parent creates the PBrowser as part |
michael@0 | 297 | // of ContentParent::CreateBrowserOrApp. |
michael@0 | 298 | // |
michael@0 | 299 | // When the parent constructs a PBrowser, the child trusts the app token it |
michael@0 | 300 | // receives from the parent. In that case, context can be any of the |
michael@0 | 301 | // IPCTabContext subtypes. |
michael@0 | 302 | // |
michael@0 | 303 | // When the child constructs a PBrowser, the parent doesn't trust the app |
michael@0 | 304 | // token it receives from the child. In this case, context must have type |
michael@0 | 305 | // PopupIPCTabContext. The browser created using a PopupIPCTabContext has |
michael@0 | 306 | // the opener PBrowser's app-id and containing-app-id. The parent checks |
michael@0 | 307 | // that if the opener is a browser element, the context is also for a |
michael@0 | 308 | // browser element. |
michael@0 | 309 | // |
michael@0 | 310 | // This allows the parent to prevent a malicious child from escalating its |
michael@0 | 311 | // privileges by requesting a PBrowser corresponding to a highly-privileged |
michael@0 | 312 | // app; the child can only request privileges for an app which the child has |
michael@0 | 313 | // access to (in the form of a TabChild). |
michael@0 | 314 | async PBrowser(IPCTabContext context, uint32_t chromeFlags); |
michael@0 | 315 | |
michael@0 | 316 | async PBlob(BlobConstructorParams params); |
michael@0 | 317 | |
michael@0 | 318 | async PJavaScript(); |
michael@0 | 319 | |
michael@0 | 320 | PFileDescriptorSet(FileDescriptor fd); |
michael@0 | 321 | |
michael@0 | 322 | child: |
michael@0 | 323 | /** |
michael@0 | 324 | * Enable system-level sandboxing features, if available. Can |
michael@0 | 325 | * usually only be performed zero or one times. The child may |
michael@0 | 326 | * abnormally exit if this fails; the details are OS-specific. |
michael@0 | 327 | */ |
michael@0 | 328 | async SetProcessSandbox(); |
michael@0 | 329 | |
michael@0 | 330 | PMemoryReportRequest(uint32_t generation, bool minimizeMemoryUsage, nsString DMDDumpIdent); |
michael@0 | 331 | |
michael@0 | 332 | /** |
michael@0 | 333 | * Notify the AudioChannelService in the child processes. |
michael@0 | 334 | */ |
michael@0 | 335 | async AudioChannelNotify(); |
michael@0 | 336 | |
michael@0 | 337 | async SpeakerManagerNotify(); |
michael@0 | 338 | |
michael@0 | 339 | /** |
michael@0 | 340 | * Dump this process's GC and CC logs. |
michael@0 | 341 | * |
michael@0 | 342 | * For documentation on the args, see dumpGCAndCCLogsToFile in |
michael@0 | 343 | * nsIMemoryInfoDumper.idl |
michael@0 | 344 | */ |
michael@0 | 345 | async DumpGCAndCCLogsToFile(nsString identifier, |
michael@0 | 346 | bool dumpAllTraces, |
michael@0 | 347 | bool dumpChildProcesses); |
michael@0 | 348 | |
michael@0 | 349 | PTestShell(); |
michael@0 | 350 | |
michael@0 | 351 | RegisterChrome(ChromePackage[] packages, ResourceMapping[] resources, |
michael@0 | 352 | OverrideMapping[] overrides, nsCString locale); |
michael@0 | 353 | |
michael@0 | 354 | async SetOffline(bool offline); |
michael@0 | 355 | |
michael@0 | 356 | async NotifyVisited(URIParams uri); |
michael@0 | 357 | |
michael@0 | 358 | PreferenceUpdate(PrefSetting pref); |
michael@0 | 359 | |
michael@0 | 360 | NotifyAlertsObserver(nsCString topic, nsString data); |
michael@0 | 361 | |
michael@0 | 362 | GeolocationUpdate(GeoPosition somewhere); |
michael@0 | 363 | |
michael@0 | 364 | // nsIPermissionManager messages |
michael@0 | 365 | AddPermission(Permission permission); |
michael@0 | 366 | |
michael@0 | 367 | ScreenSizeChanged(gfxIntSize size); |
michael@0 | 368 | |
michael@0 | 369 | FlushMemory(nsString reason); |
michael@0 | 370 | |
michael@0 | 371 | GarbageCollect(); |
michael@0 | 372 | CycleCollect(); |
michael@0 | 373 | |
michael@0 | 374 | /** |
michael@0 | 375 | * Start accessibility engine in content process. |
michael@0 | 376 | */ |
michael@0 | 377 | ActivateA11y(); |
michael@0 | 378 | |
michael@0 | 379 | AppInfo(nsCString version, nsCString buildID, nsCString name, nsCString UAName); |
michael@0 | 380 | |
michael@0 | 381 | // Notify child that last-pb-context-exited notification was observed |
michael@0 | 382 | LastPrivateDocShellDestroyed(); |
michael@0 | 383 | |
michael@0 | 384 | FilePathUpdate(nsString storageType, nsString storageName, nsString filepath, |
michael@0 | 385 | nsCString reasons); |
michael@0 | 386 | |
michael@0 | 387 | FileSystemUpdate(nsString fsName, nsString mountPoint, int32_t fsState, |
michael@0 | 388 | int32_t mountGeneration, bool isMediaPresent, |
michael@0 | 389 | bool isSharing, bool isFormatting); |
michael@0 | 390 | |
michael@0 | 391 | // Ask the Nuwa process to create a new child process. |
michael@0 | 392 | NuwaFork(); |
michael@0 | 393 | |
michael@0 | 394 | NotifyProcessPriorityChanged(ProcessPriority priority); |
michael@0 | 395 | MinimizeMemoryUsage(); |
michael@0 | 396 | |
michael@0 | 397 | /** |
michael@0 | 398 | * Used to manage nsIStyleSheetService across processes. |
michael@0 | 399 | */ |
michael@0 | 400 | async LoadAndRegisterSheet(URIParams uri, uint32_t type); |
michael@0 | 401 | async UnregisterSheet(URIParams uri, uint32_t type); |
michael@0 | 402 | |
michael@0 | 403 | NotifyPhoneStateChange(nsString newState); |
michael@0 | 404 | |
michael@0 | 405 | /** |
michael@0 | 406 | * Notify idle observers in the child |
michael@0 | 407 | */ |
michael@0 | 408 | NotifyIdleObserver(uint64_t observerId, nsCString topic, nsString str); |
michael@0 | 409 | parent: |
michael@0 | 410 | /** |
michael@0 | 411 | * Tell the content process some attributes of itself. This is |
michael@0 | 412 | * among the first information queried by content processes after |
michael@0 | 413 | * startup. (The message is sync to allow the content process to |
michael@0 | 414 | * control when it receives the information.) |
michael@0 | 415 | * |
michael@0 | 416 | * |id| is a unique ID among all subprocesses. When |isForApp && |
michael@0 | 417 | * isForBrowser|, we're loading <browser> for an app. When |
michael@0 | 418 | * |isForBrowser|, we're loading <browser>. When |!isForApp && |
michael@0 | 419 | * !isForBrowser|, we're probably loading <xul:browser remote>. |
michael@0 | 420 | */ |
michael@0 | 421 | sync GetProcessAttributes() |
michael@0 | 422 | returns (uint64_t id, bool isForApp, bool isForBrowser); |
michael@0 | 423 | sync GetXPCOMProcessAttributes() |
michael@0 | 424 | returns (bool isOffline); |
michael@0 | 425 | |
michael@0 | 426 | PDeviceStorageRequest(DeviceStorageParams params); |
michael@0 | 427 | |
michael@0 | 428 | PFileSystemRequest(FileSystemParams params); |
michael@0 | 429 | |
michael@0 | 430 | sync PCrashReporter(NativeThreadId tid, uint32_t processType); |
michael@0 | 431 | |
michael@0 | 432 | sync GetRandomValues(uint32_t length) |
michael@0 | 433 | returns (uint8_t[] randomValues); |
michael@0 | 434 | |
michael@0 | 435 | PHal(); |
michael@0 | 436 | |
michael@0 | 437 | PIndexedDB(); |
michael@0 | 438 | |
michael@0 | 439 | PNecko(); |
michael@0 | 440 | |
michael@0 | 441 | PSms(); |
michael@0 | 442 | |
michael@0 | 443 | PSpeechSynthesis(); |
michael@0 | 444 | |
michael@0 | 445 | PStorage(); |
michael@0 | 446 | |
michael@0 | 447 | PTelephony(); |
michael@0 | 448 | |
michael@0 | 449 | PBluetooth(); |
michael@0 | 450 | |
michael@0 | 451 | PFMRadio(); |
michael@0 | 452 | |
michael@0 | 453 | PAsmJSCacheEntry(OpenMode openMode, WriteParams write, Principal principal); |
michael@0 | 454 | |
michael@0 | 455 | // Services remoting |
michael@0 | 456 | |
michael@0 | 457 | async StartVisitedQuery(URIParams uri); |
michael@0 | 458 | async VisitURI(URIParams uri, OptionalURIParams referrer, uint32_t flags); |
michael@0 | 459 | async SetURITitle(URIParams uri, nsString title); |
michael@0 | 460 | |
michael@0 | 461 | async LoadURIExternal(URIParams uri); |
michael@0 | 462 | |
michael@0 | 463 | // PrefService message |
michael@0 | 464 | sync ReadPrefsArray() returns (PrefSetting[] prefs); |
michael@0 | 465 | |
michael@0 | 466 | sync ReadFontList() returns (FontListEntry[] retValue); |
michael@0 | 467 | |
michael@0 | 468 | sync SyncMessage(nsString aMessage, ClonedMessageData aData, |
michael@0 | 469 | CpowEntry[] aCpows, Principal aPrincipal) |
michael@0 | 470 | returns (nsString[] retval); |
michael@0 | 471 | |
michael@0 | 472 | rpc RpcMessage(nsString aMessage, ClonedMessageData aData, |
michael@0 | 473 | CpowEntry[] aCpows, Principal aPrincipal) |
michael@0 | 474 | returns (nsString[] retval); |
michael@0 | 475 | |
michael@0 | 476 | ShowAlertNotification(nsString imageUrl, |
michael@0 | 477 | nsString title, |
michael@0 | 478 | nsString text, |
michael@0 | 479 | bool textClickable, |
michael@0 | 480 | nsString cookie, |
michael@0 | 481 | nsString name, |
michael@0 | 482 | nsString bidi, |
michael@0 | 483 | nsString lang, |
michael@0 | 484 | Principal principal); |
michael@0 | 485 | |
michael@0 | 486 | CloseAlert(nsString name, Principal principal); |
michael@0 | 487 | |
michael@0 | 488 | PExternalHelperApp(OptionalURIParams uri, |
michael@0 | 489 | nsCString aMimeContentType, |
michael@0 | 490 | nsCString aContentDisposition, |
michael@0 | 491 | uint32_t aContentDispositionHint, |
michael@0 | 492 | nsString aContentDispositionFilename, |
michael@0 | 493 | bool aForceSave, |
michael@0 | 494 | int64_t aContentLength, |
michael@0 | 495 | OptionalURIParams aReferrer, |
michael@0 | 496 | nullable PBrowser aBrowser); |
michael@0 | 497 | |
michael@0 | 498 | AddGeolocationListener(Principal principal, bool highAccuracy); |
michael@0 | 499 | RemoveGeolocationListener(); |
michael@0 | 500 | SetGeolocationHigherAccuracy(bool enable); |
michael@0 | 501 | |
michael@0 | 502 | ConsoleMessage(nsString message); |
michael@0 | 503 | ScriptError(nsString message, nsString sourceName, nsString sourceLine, |
michael@0 | 504 | uint32_t lineNumber, uint32_t colNumber, uint32_t flags, |
michael@0 | 505 | nsCString category); |
michael@0 | 506 | |
michael@0 | 507 | // nsIPermissionManager messages |
michael@0 | 508 | sync ReadPermissions() returns (Permission[] permissions); |
michael@0 | 509 | |
michael@0 | 510 | SetClipboardText(nsString text, bool isPrivateData, int32_t whichClipboard); |
michael@0 | 511 | sync GetClipboardText(int32_t whichClipboard) |
michael@0 | 512 | returns (nsString text); |
michael@0 | 513 | EmptyClipboard(int32_t whichClipboard); |
michael@0 | 514 | sync ClipboardHasText(int32_t whichClipboard) |
michael@0 | 515 | returns (bool hasText); |
michael@0 | 516 | |
michael@0 | 517 | sync GetSystemColors(uint32_t colorsCount) |
michael@0 | 518 | returns (uint32_t[] colors); |
michael@0 | 519 | |
michael@0 | 520 | sync GetIconForExtension(nsCString aFileExt, uint32_t aIconSize) |
michael@0 | 521 | returns (uint8_t[] bits); |
michael@0 | 522 | |
michael@0 | 523 | sync GetShowPasswordSetting() |
michael@0 | 524 | returns (bool showPassword); |
michael@0 | 525 | |
michael@0 | 526 | // Notify the parent of the presence or absence of private docshells |
michael@0 | 527 | PrivateDocShellsExist(bool aExist); |
michael@0 | 528 | |
michael@0 | 529 | // Tell the parent that the child has gone idle for the first time |
michael@0 | 530 | async FirstIdle(); |
michael@0 | 531 | |
michael@0 | 532 | // Get Muted from the main AudioChannelService. |
michael@0 | 533 | sync AudioChannelGetState(AudioChannel aChannel, bool aElementHidden, |
michael@0 | 534 | bool aElementWasHidden) |
michael@0 | 535 | returns (AudioChannelState value); |
michael@0 | 536 | |
michael@0 | 537 | sync AudioChannelRegisterType(AudioChannel aChannel, bool aWithVideo); |
michael@0 | 538 | sync AudioChannelUnregisterType(AudioChannel aChannel, |
michael@0 | 539 | bool aElementHidden, |
michael@0 | 540 | bool aWithVideo); |
michael@0 | 541 | |
michael@0 | 542 | async AudioChannelChangedNotification(); |
michael@0 | 543 | async AudioChannelChangeDefVolChannel(int32_t aChannel, bool aHidden); |
michael@0 | 544 | |
michael@0 | 545 | async FilePathUpdateNotify(nsString aType, |
michael@0 | 546 | nsString aStorageName, |
michael@0 | 547 | nsString aFilepath, |
michael@0 | 548 | nsCString aReason); |
michael@0 | 549 | // get nsIVolumeService to broadcast volume information |
michael@0 | 550 | async BroadcastVolume(nsString volumeName); |
michael@0 | 551 | |
michael@0 | 552 | // Notify the parent that the child has finished handling a system message. |
michael@0 | 553 | async SystemMessageHandled(); |
michael@0 | 554 | |
michael@0 | 555 | NuwaReady(); |
michael@0 | 556 | |
michael@0 | 557 | sync AddNewProcess(uint32_t pid, ProtocolFdMapping[] aFds); |
michael@0 | 558 | |
michael@0 | 559 | // called by the child (test code only) to propagate volume changes to the parent |
michael@0 | 560 | async CreateFakeVolume(nsString fsName, nsString mountPoint); |
michael@0 | 561 | async SetFakeVolumeState(nsString fsName, int32_t fsState); |
michael@0 | 562 | |
michael@0 | 563 | sync KeywordToURI(nsCString keyword) |
michael@0 | 564 | returns (OptionalInputStreamParams postData, OptionalURIParams uri); |
michael@0 | 565 | |
michael@0 | 566 | sync SpeakerManagerForceSpeaker(bool aEnable); |
michael@0 | 567 | |
michael@0 | 568 | sync SpeakerManagerGetSpeakerStatus() |
michael@0 | 569 | returns (bool value); |
michael@0 | 570 | |
michael@0 | 571 | /** |
michael@0 | 572 | * Notifies the parent about a recording device is starting or shutdown. |
michael@0 | 573 | * @param recordingStatus starting or shutdown |
michael@0 | 574 | * @param pageURL URL that request that changing the recording status |
michael@0 | 575 | * @param isAudio recording start with microphone |
michael@0 | 576 | * @param isVideo recording start with camera |
michael@0 | 577 | */ |
michael@0 | 578 | async RecordingDeviceEvents(nsString recordingStatus, |
michael@0 | 579 | nsString pageURL, |
michael@0 | 580 | bool isAudio, |
michael@0 | 581 | bool isVideo); |
michael@0 | 582 | |
michael@0 | 583 | sync GetGraphicsFeatureStatus(int32_t aFeature) returns (int32_t aStatus, bool aSuccess); |
michael@0 | 584 | |
michael@0 | 585 | AddIdleObserver(uint64_t observerId, uint32_t idleTimeInS); |
michael@0 | 586 | RemoveIdleObserver(uint64_t observerId, uint32_t idleTimeInS); |
michael@0 | 587 | |
michael@0 | 588 | /** |
michael@0 | 589 | * This message is only used on X11 platforms. |
michael@0 | 590 | * |
michael@0 | 591 | * Send a dup of the plugin process's X socket to the parent |
michael@0 | 592 | * process. In theory, this scheme keeps the plugin's X resources |
michael@0 | 593 | * around until after both the plugin process shuts down *and* the |
michael@0 | 594 | * parent process closes the dup fd. This is used to prevent the |
michael@0 | 595 | * parent process from crashing on X errors if, e.g., the plugin |
michael@0 | 596 | * crashes *just before* a repaint and the parent process tries to |
michael@0 | 597 | * use the newly-invalid surface. |
michael@0 | 598 | */ |
michael@0 | 599 | BackUpXResources(FileDescriptor aXSocketFd); |
michael@0 | 600 | |
michael@0 | 601 | both: |
michael@0 | 602 | AsyncMessage(nsString aMessage, ClonedMessageData aData, |
michael@0 | 603 | CpowEntry[] aCpows, Principal aPrincipal); |
michael@0 | 604 | }; |
michael@0 | 605 | |
michael@0 | 606 | } |
michael@0 | 607 | } |