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 16static const char kDevToolsEventPrefix[] = "devtools."; 17static const char kOnPageEventName[] = "onPageEvent"; 18static const char kOnTabCloseEventName[] = "onTabClose"; 19 20// static 21bool 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 41std::string ExtensionDevToolsEvents::OnPageEventNameForTab(int tab_id) { 42 return base::StringPrintf("%s%d.%s", 43 kDevToolsEventPrefix, 44 tab_id, 45 kOnPageEventName); 46} 47 48// static 49std::string ExtensionDevToolsEvents::OnTabCloseEventNameForTab(int tab_id) { 50 return base::StringPrintf("%s%d.%s", 51 kDevToolsEventPrefix, 52 tab_id, 53 kOnTabCloseEventName); 54} 55 56