17242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 27242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Use of this source code is governed by a BSD-style license that can be 37242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// found in the LICENSE file. 47242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 57242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci/** 67242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @constructor 77242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 87242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciWebInspector.ContentScriptProjectDecorator = function() 97242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{ 107242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci WebInspector.targetManager.addModelListener(WebInspector.RuntimeModel, WebInspector.RuntimeModel.Events.ExecutionContextCreated, this._onContextCreated, this); 117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci WebInspector.workspace.addEventListener(WebInspector.Workspace.Events.ProjectAdded, this._onProjectAdded, this); 127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} 137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci/** 157242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @param {!WebInspector.Project} project 167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @param {!WebInspector.ExecutionContext} context 177242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 187242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciWebInspector.ContentScriptProjectDecorator._updateProjectWithExtensionName = function(project, context) 197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{ 207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if (project.url().startsWith(context.origin)) 217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci project.setDisplayName(context.name); 227242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} 237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciWebInspector.ContentScriptProjectDecorator.prototype = { 257242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci /** 267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @param {!WebInspector.Event} event 277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci _onContextCreated: function(event) 297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci { 307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci var context = /** @type {!WebInspector.ExecutionContext} */(event.data); 317242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if (!context.origin || !context.name) 327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return; 337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci var projects = WebInspector.workspace.projects(); 357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci projects = projects.filter(contentProjectWithName); 367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci for (var i = 0; i < projects.length; ++i) 387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci WebInspector.ContentScriptProjectDecorator._updateProjectWithExtensionName(projects[i], context); 397242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 407242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci /** 417242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @param {!WebInspector.Project} project 427242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @return {boolean} 437242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 447242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci function contentProjectWithName(project) 457242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci { 467242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return !!project.url() && project.type() === WebInspector.projectTypes.ContentScripts; 477242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci } 487242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci }, 497242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 507242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci /** 517242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @param {!WebInspector.Event} event 527242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 537242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci _onProjectAdded: function(event) 547242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci { 557242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci var project = /** @type {!WebInspector.Project} */(event.data); 567242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if (project.type() !== WebInspector.projectTypes.ContentScripts) 577242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return; 587242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 597242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci var targets = WebInspector.targetManager.targets(); 607242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci var contexts = []; 617242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci for (var i = 0; i < targets.length; ++i) 627242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci contexts = contexts.concat(targets[i].runtimeModel.executionContexts()); 637242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci contexts = contexts.filter(contextWithOriginAndName); 647242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 657242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci for (var i = 0; i < contexts.length; ++i) 667242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci WebInspector.ContentScriptProjectDecorator._updateProjectWithExtensionName(project, contexts[i]); 677242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 687242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci /** 697242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @param {!WebInspector.ExecutionContext} context 707242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @return {boolean} 717242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 727242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci function contextWithOriginAndName(context) 737242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci { 747242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return !!context.origin && !!context.name; 757242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci } 767242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci } 777242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}