Electron contentTracing 模塊

2019-08-14 19:21 更新

content-tracing 模塊是用來收集由底層的Chromium content 模塊 產(chǎn)生的搜索數(shù)據(jù). 這個模塊不具備web接口,所有需要我們在chrome瀏覽器中添加 chrome://tracing/ 來加載生成文件從而查看結(jié)果.

const contentTracing = require('electron').contentTracing;

const options = {
  categoryFilter: '*',
  traceOptions: 'record-until-full,enable-sampling'
}

contentTracing.startRecording(options, function() {
  console.log('Tracing started');

  setTimeout(function() {
    contentTracing.stopRecording('', function(path) {
      console.log('Tracing data recorded to ' + path);
    });
  }, 5000);
});

方法

content-tracing 模塊的方法如下:

contentTracing.getCategories(callback)

  • callback Function

獲得一組分類組. 分類組可以更改為新的代碼路徑。

一旦所有的子進程都接受到了getCategories方法請求, 分類組將調(diào)用 callback.

contentTracing.startRecording(options, callback)

  • options Object
    • categoryFilter String
    • traceOptions String
  • callback Function

開始向所有進程進行記錄.(recording)

一旦收到可以開始記錄的請求,記錄將會立馬啟動并且在子進程是異步記錄聽的. 當所有的子進程都收到 startRecording 請求的時候,callback 將會被調(diào)用.

categoryFilter是一個過濾器,它用來控制那些分類組應該被用來查找.過濾器應當有一個可選的 - 前綴來排除匹配的分類組.不允許同一個列表既是包含又是排斥.

例子:

  • test_MyTest*,
  • test_MyTest*,test_OtherStuff,
  • "-excluded_category1,-excluded_category2

traceOptions 控制著哪種查找應該被啟動,這是一個用逗號分隔的列表.可用參數(shù)如下:

  • record-until-full
  • record-continuously
  • trace-to-console
  • enable-sampling
  • enable-systrace

前3個參數(shù)是來查找記錄模塊,并且以后都互斥.如果在traceOptions 中超過一個跟蹤 記錄模式,那最后一個的優(yōu)先級最高.如果沒有指明跟蹤 記錄模式,那么它默認為 record-until-full.

 traceOptions 中的參數(shù)被解析應用之前,查找參數(shù)初始化默認為 (record_mode 設置為 record-until-full, enable_sampling  enable_systrace 設置為 false).

contentTracing.stopRecording(resultFilePath, callback)

  • resultFilePath String
  • callback Function

停止對所有子進程的記錄.

子進程通常緩存查找數(shù)據(jù),并且僅僅將數(shù)據(jù)截取和發(fā)送給主進程.這有利于在通過 IPC 發(fā)送查找數(shù)據(jù)之前減小查找時的運行開銷,這樣做很有價值.因此,發(fā)送查找數(shù)據(jù),我們應當異步通知所有子進程來截取任何待查找的數(shù)據(jù).

一旦所有子進程接收到了 stopRecording 請求,將調(diào)用 callback ,并且返回一個包含查找數(shù)據(jù)的文件.

如果 resultFilePath 不為空,那么將把查找數(shù)據(jù)寫入其中,否則寫入一個臨時文件.實際文件路徑如果不為空,則將調(diào)用 callback .

contentTracing.startMonitoring(options, callback)

  • options Object
    • categoryFilter String
    • traceOptions String
  • callback Function

開始向所有進程進行監(jiān)聽.(monitoring)

一旦收到可以開始監(jiān)聽的請求,記錄將會立馬啟動并且在子進程是異步記監(jiān)聽的. 當所有的子進程都收到 startMonitoring 請求的時候,callback 將會被調(diào)用.

contentTracing.stopMonitoring(callback)

  • callback Function

停止對所有子進程的監(jiān)聽.

一旦所有子進程接收到了 stopMonitoring 請求,將調(diào)用 callback .

contentTracing.captureMonitoringSnapshot(resultFilePath, callback)

  • resultFilePath String
  • callback Function

獲取當前監(jiān)聽的查找數(shù)據(jù).

子進程通常緩存查找數(shù)據(jù),并且僅僅將數(shù)據(jù)截取和發(fā)送給主進程.因為如果直接通過 IPC 來發(fā)送查找數(shù)據(jù)的代價昂貴,我們寧愿避免不必要的查找運行開銷.因此,為了停止查找,我們應當異步通知所有子進程來截取任何待查找的數(shù)據(jù).

一旦所有子進程接收到了 captureMonitoringSnapshot 請求,將調(diào)用 callback ,并且返回一個包含查找數(shù)據(jù)的文件.

contentTracing.getTraceBufferUsage(callback)

  • callback Function

通過查找 buffer 進程來獲取百分比最大使用量.當確定了TraceBufferUsage 的值確定的時候,就調(diào)用 callback .

contentTracing.setWatchEvent(categoryName, eventName, callback)

  • categoryName String
  • eventName String
  • callback Function

任意時刻在任何進程上指定事件發(fā)生時將調(diào)用 callback .

contentTracing.cancelWatchEvent()

取消 watch 事件. 如果啟動查找,這或許會造成 watch 事件的回調(diào)函數(shù) 出錯.

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號