api-browser-view-spec.js 4.4 KB

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