1197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// found in the LICENSE file. 4197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 5197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "content/browser/media/capture/web_contents_capture_util.h" 6197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 7197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "base/basictypes.h" 8197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "base/strings/string_number_conversions.h" 9197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "base/strings/string_piece.h" 10197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "base/strings/string_util.h" 11197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 12c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace content { 13197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 14e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)bool WebContentsCaptureUtil::IsWebContentsDeviceId( 15197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch const std::string& device_id) { 16197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch int ignored; 17197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return ExtractTabCaptureTarget(device_id, &ignored, &ignored); 18197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} 19197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 20197021e6b966cfb06891637935ef33fff06433d1Ben Murdochbool WebContentsCaptureUtil::ExtractTabCaptureTarget( 21197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch const std::string& device_id_param, 22197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch int* render_process_id, 23197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch int* main_render_frame_id) { 24197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch static const char kDeviceScheme[] = "web-contents-media-stream://"; 25197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch if (!StartsWithASCII(device_id_param, kDeviceScheme, true)) 26197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return false; 27197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 28197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch const std::string device_id = device_id_param.substr( 29197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch arraysize(kDeviceScheme) - 1); 30197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 31197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch const size_t sep_pos = device_id.find(':'); 32197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch if (sep_pos == std::string::npos) 33197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return false; 34197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 35197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch const base::StringPiece component1(device_id.data(), sep_pos); 36197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch const base::StringPiece component2(device_id.data() + sep_pos + 1, 37197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch device_id.length() - sep_pos - 1); 38197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 397242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return (base::StringToInt(component1, render_process_id) && 40197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch base::StringToInt(component2, main_render_frame_id)); 41197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} 42197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 43e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)} // namespace content 44197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch