1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/extensions/extension_devtools_events.h" 6 7 #include <vector> 8 9 #include "base/string_number_conversions.h" 10 #include "base/string_split.h" 11 #include "base/string_util.h" 12 #include "base/stringprintf.h" 13 14 // These string constants and the formats used in this file must stay 15 // in sync with chrome/renderer/resources/extension_process_bindings.js 16 static const char kDevToolsEventPrefix[] = "devtools."; 17 static const char kOnPageEventName[] = "onPageEvent"; 18 static const char kOnTabCloseEventName[] = "onTabClose"; 19 20 // static 21 bool ExtensionDevToolsEvents::IsDevToolsEventName( 22 const std::string& event_name, int* tab_id) { 23 // We only care about events of the form "devtools.34.*", where 34 is 24 // a tab id. 25 if (IsStringASCII(event_name) && 26 StartsWithASCII(event_name, 27 kDevToolsEventPrefix, 28 true /* case_sensitive */)) { 29 // At this point we want something like "4.onPageEvent" 30 std::vector<std::string> parts; 31 base::SplitString( 32 event_name.substr(strlen(kDevToolsEventPrefix)), '.', &parts); 33 if (parts.size() == 2 && base::StringToInt(parts[0], tab_id)) { 34 return true; 35 } 36 } 37 return false; 38 } 39 40 // static 41 std::string ExtensionDevToolsEvents::OnPageEventNameForTab(int tab_id) { 42 return base::StringPrintf("%s%d.%s", 43 kDevToolsEventPrefix, 44 tab_id, 45 kOnPageEventName); 46 } 47 48 // static 49 std::string ExtensionDevToolsEvents::OnTabCloseEventNameForTab(int tab_id) { 50 return base::StringPrintf("%s%d.%s", 51 kDevToolsEventPrefix, 52 tab_id, 53 kOnTabCloseEventName); 54 } 55 56