| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * @fileoverview The way these tests work is as follows: | 6 * @fileoverview The way these tests work is as follows: |
| 7 * C++ in net_internals_ui_browsertest.cc does any necessary setup, and then | 7 * C++ in net_internals_ui_browsertest.cc does any necessary setup, and then |
| 8 * calls the entry point for a test with RunJavascriptTest. The called | 8 * calls the entry point for a test with RunJavascriptTest. The called |
| 9 * function can then use the assert/expect functions defined in test_api.js. | 9 * function can then use the assert/expect functions defined in test_api.js. |
| 10 * All callbacks from the browser are wrapped in such a way that they can | 10 * All callbacks from the browser are wrapped in such a way that they can |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 /** | 28 /** |
| 29 * Map of tab handle names to location hashes. | 29 * Map of tab handle names to location hashes. |
| 30 * @type {object.<string, string>} | 30 * @type {object.<string, string>} |
| 31 */ | 31 */ |
| 32 var hashToTabHandleIdMap = { | 32 var hashToTabHandleIdMap = { |
| 33 capture: CaptureView.TAB_HANDLE_ID, | 33 capture: CaptureView.TAB_HANDLE_ID, |
| 34 export: ExportView.TAB_HANDLE_ID, | 34 export: ExportView.TAB_HANDLE_ID, |
| 35 import: ImportView.TAB_HANDLE_ID, | 35 import: ImportView.TAB_HANDLE_ID, |
| 36 proxy: ProxyView.TAB_HANDLE_ID, | 36 proxy: ProxyView.TAB_HANDLE_ID, |
| 37 events: EventsView.TAB_HANDLE_ID, | 37 events: EventsView.TAB_HANDLE_ID, |
| 38 timeline: TimelineView.TAB_HANDLE_ID, |
| 38 dns: DnsView.TAB_HANDLE_ID, | 39 dns: DnsView.TAB_HANDLE_ID, |
| 39 sockets: SocketsView.TAB_HANDLE_ID, | 40 sockets: SocketsView.TAB_HANDLE_ID, |
| 40 spdy: SpdyView.TAB_HANDLE_ID, | 41 spdy: SpdyView.TAB_HANDLE_ID, |
| 41 httpCache: HttpCacheView.TAB_HANDLE_ID, | 42 httpCache: HttpCacheView.TAB_HANDLE_ID, |
| 42 httpThrottling: HttpThrottlingView.TAB_HANDLE_ID, | 43 httpThrottling: HttpThrottlingView.TAB_HANDLE_ID, |
| 43 serviceProviders: ServiceProvidersView.TAB_HANDLE_ID, | 44 serviceProviders: ServiceProvidersView.TAB_HANDLE_ID, |
| 44 tests: TestView.TAB_HANDLE_ID, | 45 tests: TestView.TAB_HANDLE_ID, |
| 45 hsts: HSTSView.TAB_HANDLE_ID, | 46 hsts: HSTSView.TAB_HANDLE_ID, |
| 46 logs: LogsView.TAB_HANDLE_ID, | 47 logs: LogsView.TAB_HANDLE_ID, |
| 47 prerender: PrerenderView.TAB_HANDLE_ID | 48 prerender: PrerenderView.TAB_HANDLE_ID |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 * Adds a Task to the end of the queue. Each Task may only be added once | 312 * Adds a Task to the end of the queue. Each Task may only be added once |
| 312 * to a single queue. | 313 * to a single queue. |
| 313 * @param {Task}: task The Task to add. | 314 * @param {Task}: task The Task to add. |
| 314 */ | 315 */ |
| 315 addTask: function(task) { | 316 addTask: function(task) { |
| 316 this.tasks_.push(task); | 317 this.tasks_.push(task); |
| 317 task.setTaskQueue_(this); | 318 task.setTaskQueue_(this); |
| 318 }, | 319 }, |
| 319 | 320 |
| 320 /** | 321 /** |
| 322 * Adds a Task to the end of the queue. The task will call the provided |
| 323 * function, and then complete. |
| 324 * @param {function}: taskFunction The function the task will call. |
| 325 */ |
| 326 addFunctionTask: function(taskFunction) { |
| 327 this.addTask(new CallFunctionTask(taskFunction)); |
| 328 }, |
| 329 |
| 330 /** |
| 321 * Starts running the Tasks in the queue. Once called, may not be called | 331 * Starts running the Tasks in the queue. Once called, may not be called |
| 322 * again. | 332 * again. |
| 323 */ | 333 */ |
| 324 run: function() { | 334 run: function() { |
| 325 assertFalse(this.isRunning_); | 335 assertFalse(this.isRunning_); |
| 326 this.isRunning_ = true; | 336 this.isRunning_ = true; |
| 327 this.runNextTask_(); | 337 this.runNextTask_(); |
| 328 }, | 338 }, |
| 329 | 339 |
| 330 /** | 340 /** |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 384 * task. Runs the next task, if any. | 394 * task. Runs the next task, if any. |
| 385 */ | 395 */ |
| 386 onTaskDone: function() { | 396 onTaskDone: function() { |
| 387 assertFalse(this.isDone_); | 397 assertFalse(this.isDone_); |
| 388 this.isDone_ = true; | 398 this.isDone_ = true; |
| 389 this.taskQueue_.runNextTask_(); | 399 this.taskQueue_.runNextTask_(); |
| 390 } | 400 } |
| 391 }; | 401 }; |
| 392 | 402 |
| 393 /** | 403 /** |
| 404 * A Task that can be added to a TaskQueue. A Task is started with a call to |
| 405 * the start function, and must call its own onTaskDone when complete. |
| 406 * @constructor |
| 407 */ |
| 408 function CallFunctionTask(taskFunction) { |
| 409 Task.call(this); |
| 410 assertEquals('function', typeof taskFunction); |
| 411 this.taskFunction_ = taskFunction; |
| 412 } |
| 413 |
| 414 CallFunctionTask.prototype = { |
| 415 __proto__: Task.prototype, |
| 416 |
| 417 /** |
| 418 * Runs the function and then completes. |
| 419 */ |
| 420 start: function() { |
| 421 this.taskFunction_(); |
| 422 this.onTaskDone(); |
| 423 } |
| 424 }; |
| 425 |
| 426 /** |
| 394 * Returns true if a node does not have a 'display' property of 'none'. | 427 * Returns true if a node does not have a 'display' property of 'none'. |
| 395 * @param {node}: node The node to check. | 428 * @param {node}: node The node to check. |
| 396 */ | 429 */ |
| 397 function isDisplayed(node) { | 430 function isDisplayed(node) { |
| 398 var style = getComputedStyle(node); | 431 var style = getComputedStyle(node); |
| 399 return style.getPropertyValue('display') != 'none'; | 432 return style.getPropertyValue('display') != 'none'; |
| 400 } | 433 } |
| 401 | 434 |
| 435 /** |
| 436 * Creates a new NetLog source. Note that the id may conflict with events |
| 437 * received from the browser. |
| 438 * @param {int}: type The source type. |
| 439 * @param {int}: id The source id. |
| 440 * @constructor |
| 441 */ |
| 442 function Source(type, id) { |
| 443 assertNotEquals(getKeyWithValue(LogSourceType, type), '?'); |
| 444 assertGE(id, 0); |
| 445 this.type = type; |
| 446 this.id = id; |
| 447 } |
| 448 |
| 449 /** |
| 450 * Creates a new NetLog event. |
| 451 * @param {Source}: source The source associated with the event. |
| 452 * @param {int}: type The event id. |
| 453 * @param {int}: time When the event occurred. |
| 454 * @param {int}: phase The event phase. |
| 455 * @param {object}: params The event parameters. May be null. |
| 456 * @constructor |
| 457 */ |
| 458 function Event(source, type, time, phase, params) { |
| 459 assertNotEquals(getKeyWithValue(LogEventType, type), '?'); |
| 460 assertNotEquals(getKeyWithValue(LogEventPhase, phase), '?'); |
| 461 |
| 462 this.source = source; |
| 463 this.phase = phase; |
| 464 this.type = type; |
| 465 this.time = "" + time; |
| 466 this.phase = phase; |
| 467 if (params) |
| 468 this.params = params; |
| 469 } |
| 470 |
| 471 /** |
| 472 * Creates a new NetLog begin event. Parameters are the same as Event, |
| 473 * except there's no |phase| argument. |
| 474 * @see Event |
| 475 */ |
| 476 function CreateBeginEvent(source, type, time, params) { |
| 477 return new Event(source, type, time, LogEventPhase.PHASE_BEGIN, params); |
| 478 } |
| 479 |
| 480 /** |
| 481 * Creates a new NetLog end event. Parameters are the same as Event, |
| 482 * except there's no |phase| argument. |
| 483 * @see Event |
| 484 */ |
| 485 function CreateEndEvent(source, type, time, params) { |
| 486 return new Event(source, type, time, LogEventPhase.PHASE_END, params); |
| 487 } |
| 488 |
| 489 /** |
| 490 * Creates a new NetLog end event matching the given begin event. |
| 491 * @param {Event}: beginEvent The begin event. Returned event will have the |
| 492 * same source and type. |
| 493 * @param {int}: time When the event occurred. |
| 494 * @param {object}: params The event parameters. May be null. |
| 495 * @see Event |
| 496 */ |
| 497 function CreateMatchingEndEvent(beginEvent, time, params) { |
| 498 return CreateEndEvent(beginEvent.source, beginEvent.type, time, params); |
| 499 } |
| 500 |
| 402 // Exported functions. | 501 // Exported functions. |
| 403 return { | 502 return { |
| 404 test: test, | 503 test: test, |
| 405 checkStyledTableRows: checkStyledTableRows, | 504 checkStyledTableRows: checkStyledTableRows, |
| 406 checkTabHandleVisibility: checkTabHandleVisibility, | 505 checkTabHandleVisibility: checkTabHandleVisibility, |
| 407 getStyledTableText: getStyledTableText, | 506 getStyledTableText: getStyledTableText, |
| 408 isDisplayed: isDisplayed, | 507 isDisplayed: isDisplayed, |
| 409 runTest: runTest, | 508 runTest: runTest, |
| 410 switchToView: switchToView, | 509 switchToView: switchToView, |
| 510 TaskQueue: TaskQueue, |
| 411 Task: Task, | 511 Task: Task, |
| 412 TaskQueue: TaskQueue | 512 Source: Source, |
| 513 Event: Event, |
| 514 CreateBeginEvent: CreateBeginEvent, |
| 515 CreateEndEvent: CreateEndEvent, |
| 516 CreateMatchingEndEvent: CreateMatchingEndEvent |
| 413 }; | 517 }; |
| 414 })(); | 518 })(); |
| 415 | 519 |
| 416 netInternalsTest.test('netInternalsDone', function() { | 520 netInternalsTest.test('netInternalsDone', function() { |
| 417 testDone(); | 521 testDone(); |
| 418 }); | 522 }); |
| 419 | 523 |
| 420 netInternalsTest.test('netInternalsExpectFail', function() { | 524 netInternalsTest.test('netInternalsExpectFail', function() { |
| 421 expectNotReached(); | 525 expectNotReached(); |
| 422 }); | 526 }); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 474 HostResolverInfoObserver.prototype.onHostResolverInfoChanged = function() { | 578 HostResolverInfoObserver.prototype.onHostResolverInfoChanged = function() { |
| 475 assertNotReached(); | 579 assertNotReached(); |
| 476 }; | 580 }; |
| 477 | 581 |
| 478 // Create the observer and add it to |g_browser|. | 582 // Create the observer and add it to |g_browser|. |
| 479 g_browser.addHostResolverInfoObserver(new HostResolverInfoObserver()); | 583 g_browser.addHostResolverInfoObserver(new HostResolverInfoObserver()); |
| 480 | 584 |
| 481 // Needed to trigger an update. | 585 // Needed to trigger an update. |
| 482 netInternalsTest.switchToView('dns'); | 586 netInternalsTest.switchToView('dns'); |
| 483 }); | 587 }); |
| OLD | NEW |