Home | History | Annotate | Download | only in extensions
      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