text: import generateId from '../generate-id';
  
  export const TYPE = {
      establishConnection:      'driver|establish-connection',
      switchToWindow:           'driver|switch-to-window',
      closeWindow:              'driver|close-window',
      closeWindowValidation:    'driver|close-window-validation',
      switchToWindowValidation: 'driver|switch-to-window-validation',
      commandExecuted:          'driver|command-executed',
      executeCommand:           'driver|execute-command',
      confirmation:             'driver|confirmation',
      setNativeDialogHandler:   'driver|set-native-dialog-handler',
      setAsMaster:              'driver|set-as-master',
      closeAllChildWindows:     'driver|close-all-child-windows'
  };
  
  class InterDriverMessage {
      constructor (type) {
          this.type = type;
          this.id   = generateId();
      }
  }
  
  export class EstablishConnectionMessage extends InterDriverMessage {
      constructor () {
          super(TYPE.establishConnection);
      }
  }
  
  export class CloseWindowValidationMessage extends InterDriverMessage {
      constructor (windowId) {
          super(TYPE.closeWindowValidation);
  
          this.windowId = windowId;
      }
  }
  
  export class SwitchToWindowValidationMessage extends InterDriverMessage {
      constructor (windowId) {
          super(TYPE.switchToWindowValidation);
  
          this.windowId = windowId;
      }
  }
  
  export class CloseWindowCommandMessage extends InterDriverMessage {
      constructor (windowId) {
          super(TYPE.closeWindow);
  
          this.windowId = windowId;
      }
  }
  
  export class SwitchToWindowCommandMessage extends InterDriverMessage {
      constructor (windowId) {
          super(TYPE.switchToWindow);
  
          this.windowId = windowId;
      }
  }
  
  export class CommandExecutedMessage extends InterDriverMessage {
      constructor (driverStatus) {
          super(TYPE.commandExecuted);
  
          this.driverStatus = driverStatus;
      }
  }
  
  export class ExecuteCommandMessage extends InterDriverMessage {
      constructor (command, testSpeed) {
          super(TYPE.executeCommand);
  
          this.command   = command;
          this.testSpeed = testSpeed;
      }
  }
  
  export class ConfirmationMessage extends InterDriverMessage {
      constructor (requestMessageId, result) {
          super(TYPE.confirmation);
  
          this.requestMessageId = requestMessageId;
          this.result           = result;
      }
  }
  
  export class SetNativeDialogHandlerMessage extends InterDriverMessage {
      constructor (dialogHandler) {
          super(TYPE.setNativeDialogHandler);
  
          this.dialogHandler = dialogHandler;
      }
  }
  
  export class SetAsMasterMessage extends InterDriverMessage {
      constructor () {
          super(TYPE.setAsMaster);
      }
  }
  
  export class CloseAllChildWindowsMessage extends InterDriverMessage {
      constructor () {
          super(TYPE.closeAllChildWindows);
      }
  }
  