diff options
author | kaznacheev@chromium.org <kaznacheev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-12 13:54:35 +0000 |
---|---|---|
committer | kaznacheev@chromium.org <kaznacheev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-12 13:54:35 +0000 |
commit | 02ff8ad95828f62476fce8de96324f382491b079 (patch) | |
tree | ac4a84d0f9ab7bc55a4e6d600fbffec2b87c7d5a | |
parent | b275654c52912f71c07583f18ac42489917f010e (diff) | |
download | chromium_src-02ff8ad95828f62476fce8de96324f382491b079.zip chromium_src-02ff8ad95828f62476fce8de96324f382491b079.tar.gz chromium_src-02ff8ad95828f62476fce8de96324f382491b079.tar.bz2 |
Add chrome.debugger API tests for shared worker targets.
BUG=226014
Review URL: https://chromiumcodereview.appspot.com/13773003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@193915 0039d316-1c4b-4281-b951-d872f2087c98
5 files changed, 60 insertions, 1 deletions
diff --git a/chrome/browser/extensions/api/debugger/debugger_api.cc b/chrome/browser/extensions/api/debugger/debugger_api.cc index b41d28a..b9d3b59 100644 --- a/chrome/browser/extensions/api/debugger/debugger_api.cc +++ b/chrome/browser/extensions/api/debugger/debugger_api.cc @@ -301,6 +301,12 @@ ExtensionDevToolsClientHost::ExtensionDevToolsClientHost( registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, content::Source<Profile>(profile_)); + // RVH-based agents disconnect from their clients when the app is terminating + // but shared worker-based agents do not. + // Disconnect explicitly to make sure that |this| observer is not leaked. + registrar_.Add(this, chrome::NOTIFICATION_APP_TERMINATING, + content::NotificationService::AllSources()); + // Attach to debugger and tell it we are ready. DevToolsManager::GetInstance()-> RegisterDevToolsClientHostFor(agent_host_, this); @@ -386,7 +392,9 @@ void ExtensionDevToolsClientHost::Observe( content::Details<extensions::UnloadedExtensionInfo>(details)-> extension->id(); if (id == extension_id_) - Close(); + Close(); + } else if (type == chrome::NOTIFICATION_APP_TERMINATING) { + Close(); } else { DCHECK_EQ(chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, type); if (content::Details<InfoBarRemovedDetails>(details)->first == diff --git a/chrome/test/data/extensions/api_test/debugger/background.js b/chrome/test/data/extensions/api_test/debugger/background.js index 17f9090..ce7d5ba8 100644 --- a/chrome/test/data/extensions/api_test/debugger/background.js +++ b/chrome/test/data/extensions/api_test/debugger/background.js @@ -147,5 +147,22 @@ chrome.test.runTests([ } chrome.tabs.onUpdated.addListener(onUpdated); chrome.tabs.create({url: "inspected.html"}); + }, + + function discoverWorker() { + var workerPort = new SharedWorker("worker.js").port; + workerPort.onmessage = function() { + chrome.debugger.getTargets(function(targets) { + var page = targets.filter( + function(t) { return t.type == 'worker' })[0]; + if (page) { + chrome.debugger.attach({targetId: page.id}, protocolVersion, + fail(SILENT_FLAG_REQUIRED)); + } else { + chrome.test.fail("Cannot discover a newly created worker"); + } + }); + }; + workerPort.start(); } ]); diff --git a/chrome/test/data/extensions/api_test/debugger/worker.js b/chrome/test/data/extensions/api_test/debugger/worker.js new file mode 100644 index 0000000..4d310c5 --- /dev/null +++ b/chrome/test/data/extensions/api_test/debugger/worker.js @@ -0,0 +1,9 @@ +// Copyright (c) 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +self.addEventListener('connect', function(e) { + var port = e.ports[0]; + port.start(); + port.postMessage({}); +});
\ No newline at end of file diff --git a/chrome/test/data/extensions/api_test/debugger_extension/background.js b/chrome/test/data/extensions/api_test/debugger_extension/background.js index 20efd32..2299000 100644 --- a/chrome/test/data/extensions/api_test/debugger_extension/background.js +++ b/chrome/test/data/extensions/api_test/debugger_extension/background.js @@ -51,5 +51,21 @@ chrome.test.runTests([ chrome.test.fail("Cannot discover own background page"); } }); + }, + + function discoverWorker() { + var workerPort = new SharedWorker("worker.js").port; + workerPort.onmessage = function() { + chrome.debugger.getTargets(function(targets) { + var page = targets.filter( + function(t) { return t.type == 'worker' })[0]; + if (page) { + chrome.debugger.attach({targetId: page.id}, protocolVersion, pass()); + } else { + chrome.test.fail("Cannot discover a newly created worker"); + } + }); + }; + workerPort.start(); } ]); diff --git a/chrome/test/data/extensions/api_test/debugger_extension/worker.js b/chrome/test/data/extensions/api_test/debugger_extension/worker.js new file mode 100644 index 0000000..4d310c5 --- /dev/null +++ b/chrome/test/data/extensions/api_test/debugger_extension/worker.js @@ -0,0 +1,9 @@ +// Copyright (c) 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +self.addEventListener('connect', function(e) { + var port = e.ports[0]; + port.start(); + port.postMessage({}); +});
\ No newline at end of file |