/// <summary> /// Initializes a new instance of the <see cref="ExtensionConnection"/> class. /// </summary> /// <param name="lockObject">An <see cref="ILock"/> object used to lock the mutex port before connection.</param> /// <param name="binary">The <see cref="FirefoxBinary"/> on which to make the connection.</param> /// <param name="profile">The <see cref="FirefoxProfile"/> creating the connection.</param> /// <param name="host">The name of the host on which to connect to the Firefox extension (usually "localhost").</param> public ExtensionConnection(ILock lockObject, FirefoxBinary binary, FirefoxProfile profile, string host) { this.profile = profile; if (binary == null) { this.process = new FirefoxBinary(); } else { this.process = binary; } lockObject.LockObject(this.process.TimeoutInMilliseconds); try { int portToUse = DetermineNextFreePort(host, profile.Port); profile.Port = portToUse; profile.UpdateUserPreferences(); this.process.Clean(profile); this.process.StartProfile(profile, null); this.SetAddress(host, portToUse); // TODO (JimEvans): Get a better url algorithm. this.executor = new HttpCommandExecutor(new Uri(string.Format(CultureInfo.InvariantCulture, "http://{0}:{1}/hub/", host, portToUse))); } finally { lockObject.UnlockObject(); } }
/// <summary> /// Initializes a new instance of the <see cref="ExtensionConnection"/> class. /// </summary> /// <param name="lockObject">An <see cref="ILock"/> object used to lock the mutex port before connection.</param> /// <param name="binary">The <see cref="FirefoxBinary"/> on which to make the connection.</param> /// <param name="profile">The <see cref="FirefoxProfile"/> creating the connection.</param> /// <param name="host">The name of the host on which to connect to the Firefox extension (usually "localhost").</param> public ExtensionConnection(ILock lockObject, FirefoxBinary binary, FirefoxProfile profile, string host) { this.profile = profile; if (binary == null) { this.process = new FirefoxBinary(); } else { this.process = binary; } lockObject.LockObject(this.process.TimeoutInMilliseconds); try { int portToUse = DetermineNextFreePort(host, profile.Port); profile.Port = portToUse; profile.UpdateUserPreferences(); this.process.Clean(profile); this.process.StartProfile(profile, null); SetAddress(host, portToUse); // TODO (JimEvans): Get a better url algorithm. executor = new HttpCommandExecutor(new Uri(string.Format(CultureInfo.InvariantCulture, "http://{0}:{1}/hub/", host, portToUse))); } finally { lockObject.UnlockObject(); } }
/// <summary> /// Initializes a new instance of the <see cref="ExtensionConnection"/> class. /// </summary> /// <param name="lockObject">An <see cref="ILock"/> object used to lock the mutex port before connection.</param> /// <param name="binary">The <see cref="FirefoxBinary"/> on which to make the connection.</param> /// <param name="profile">The <see cref="FirefoxProfile"/> creating the connection.</param> /// <param name="host">The name of the host on which to connect to the Firefox extension (usually "localhost").</param> public ExtensionConnection(ILock lockObject, FirefoxBinary binary, FirefoxProfile profile, string host) { this.profile = profile; if (binary == null) { this.process = new FirefoxBinary(); } else { this.process = binary; } lockObject.LockObject(this.process.TimeoutInMilliseconds); try { int portToUse = DetermineNextFreePort(host, profile.Port); profile.Port = portToUse; profile.UpdateUserPreferences(); this.process.Clean(profile); this.process.StartProfile(profile, null); SetAddress(host, portToUse); ConnectToBrowser(this.process.TimeoutInMilliseconds); } finally { lockObject.UnlockObject(); } }