api-browser-view-spec.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. 'use strict'
  2. const assert = require('assert')
  3. const {closeWindow} = require('./window-helpers')
  4. const {remote} = require('electron')
  5. const {BrowserView, BrowserWindow} = remote
  6. describe('BrowserView module', () => {
  7. let w = null
  8. let view = null
  9. beforeEach(() => {
  10. w = new BrowserWindow({
  11. show: false,
  12. width: 400,
  13. height: 400,
  14. webPreferences: {
  15. backgroundThrottling: false
  16. }
  17. })
  18. })
  19. afterEach(() => {
  20. if (view) {
  21. view.destroy()
  22. view = null
  23. }
  24. return closeWindow(w).then(() => { w = null })
  25. })
  26. describe('BrowserView.destroy()', () => {
  27. it('does not throw', () => {
  28. view = new BrowserView()
  29. view.destroy()
  30. })
  31. })
  32. describe('BrowserView.isDestroyed()', () => {
  33. it('returns correct value', () => {
  34. view = new BrowserView()
  35. assert.ok(!view.isDestroyed())
  36. view.destroy()
  37. assert.ok(view.isDestroyed())
  38. })
  39. })
  40. describe('BrowserView.setBackgroundColor()', () => {
  41. it('does not throw for valid args', () => {
  42. view = new BrowserView()
  43. view.setBackgroundColor('#000')
  44. })
  45. it('throws for invalid args', () => {
  46. view = new BrowserView()
  47. assert.throws(() => {
  48. view.setBackgroundColor(null)
  49. }, /conversion failure/)
  50. })
  51. })
  52. describe('BrowserView.setAutoResize()', () => {
  53. it('does not throw for valid args', () => {
  54. view = new BrowserView()
  55. view.setAutoResize({})
  56. view.setAutoResize({ width: true, height: false })
  57. })
  58. it('throws for invalid args', () => {
  59. view = new BrowserView()
  60. assert.throws(() => {
  61. view.setAutoResize(null)
  62. }, /conversion failure/)
  63. })
  64. })
  65. describe('BrowserView.setBounds()', () => {
  66. it('does not throw for valid args', () => {
  67. view = new BrowserView()
  68. view.setBounds({ x: 0, y: 0, width: 1, height: 1 })
  69. })
  70. it('throws for invalid args', () => {
  71. view = new BrowserView()
  72. assert.throws(() => {
  73. view.setBounds(null)
  74. }, /conversion failure/)
  75. assert.throws(() => {
  76. view.setBounds({})
  77. }, /conversion failure/)
  78. })
  79. })
  80. describe('BrowserWindow.setBrowserView()', () => {
  81. it('does not throw for valid args', () => {
  82. view = new BrowserView()
  83. w.setBrowserView(view)
  84. })
  85. it('does not throw if called multiple times with same view', () => {
  86. view = new BrowserView()
  87. w.setBrowserView(view)
  88. w.setBrowserView(view)
  89. w.setBrowserView(view)
  90. })
  91. })
  92. describe('BrowserWindow.getBrowserView()', () => {
  93. it('returns the set view', () => {
  94. view = new BrowserView()
  95. w.setBrowserView(view)
  96. assert.notEqual(view.id, null)
  97. let view2 = w.getBrowserView()
  98. assert.equal(view2.webContents.id, view.webContents.id)
  99. })
  100. it('returns null if none is set', () => {
  101. let view = w.getBrowserView()
  102. assert.equal(null, view)
  103. })
  104. })
  105. describe('BrowserView.webContents.getOwnerBrowserWindow()', () => {
  106. it('points to owning window', () => {
  107. view = new BrowserView()
  108. assert.ok(!view.webContents.getOwnerBrowserWindow())
  109. w.setBrowserView(view)
  110. assert.equal(view.webContents.getOwnerBrowserWindow(), w)
  111. w.setBrowserView(null)
  112. assert.ok(!view.webContents.getOwnerBrowserWindow())
  113. })
  114. })
  115. describe('BrowserView.fromId()', () => {
  116. it('returns the view with given id', () => {
  117. view = new BrowserView()
  118. w.setBrowserView(view)
  119. assert.notEqual(view.id, null)
  120. let view2 = BrowserView.fromId(view.id)
  121. assert.equal(view2.webContents.id, view.webContents.id)
  122. })
  123. })
  124. describe('BrowserView.fromWebContents()', () => {
  125. it('returns the view with given id', () => {
  126. view = new BrowserView()
  127. w.setBrowserView(view)
  128. assert.notEqual(view.id, null)
  129. let view2 = BrowserView.fromWebContents(view.webContents)
  130. assert.equal(view2.webContents.id, view.webContents.id)
  131. })
  132. })
  133. describe('BrowserView.getAllViews()', () => {
  134. it('returns all views', () => {
  135. view = new BrowserView()
  136. w.setBrowserView(view)
  137. assert.notEqual(view.id, null)
  138. const views = BrowserView.getAllViews()
  139. assert.equal(views.length, 1)
  140. assert.equal(views[0].webContents.id, view.webContents.id)
  141. })
  142. })
  143. })