Non-lowercase MIME types are incorrectly handled when dragging and dropping to the TabStrip
Reported by
mbl...@yandex-team.ru,
Apr 8 2016
|
|||||
Issue description
UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 YaBrowser/16.3.0.6920 (beta) Safari/537.36
Steps to reproduce the problem:
Drop the .potm file on tab contents. MS Office should be installed on the machine so the .potm type would be registered. Here's the relevant registration information on my machine:
[HKEY_CLASSES_ROOT\.potm]
@="PowerPoint.TemplateMacroEnabled.12"
"Content Type"="application/vnd.ms-powerpoint.template.macroEnabled.12"
"PerceivedType"="document"
[HKEY_CLASSES_ROOT\.potm\PowerPoint.TemplateMacroEnabled.12]
[HKEY_CLASSES_ROOT\.potm\PowerPoint.TemplateMacroEnabled.12\ShellNew]
[HKEY_CLASSES_ROOT\.potm\ShellEx]
[HKEY_CLASSES_ROOT\.potm\ShellEx\PropertyHandler]
@="{993BE281-6695-4BA5-8A2A-7AACBFAAB69E}"
[HKEY_CLASSES_ROOT\.potm\ShellEx\{BB2E617C-0920-11d1-9A0B-00C04FC2D6C1}]
@="{C41662BB-1FA0-4CE0-8DC5-9B7F8279FF97}"
What is the expected behavior?
What went wrong?
Here's what happens after the drop operation is handled:
1. First we handle the dropping part of drag'n'drop:
*1 chrome.dll!BrowserTabStripController::CheckFileSupported(const GURL & url={...})
2 chrome.dll!TabStrip::OnDragEntered(const ui::DropTargetEvent & event={...})
3 chrome.dll!BrowserRootView::OnDragUpdated(const ui::DropTargetEvent & event={...})
4 views.dll!views::DropHelper::NotifyDragOver(const ui::OSExchangeData & data={...}, const gfx::Point & root_view_location={...}, int drag_operation=7)
5 views.dll!views::DropHelper::OnDragOver(const ui::OSExchangeData & data={...}, const gfx::Point & root_view_location={...}, int drag_operation=7)
6 views.dll!views::DesktopNativeWidgetAura::OnDragUpdated(const ui::DropTargetEvent & event={...})
7 views.dll!views::DesktopDropTargetWin::OnDragOver(IDataObject * data_object=0x51ec3640, unsigned long key_state=1, tagPOINT position={...}, unsigned long effect=7)
8 ui_base.dll!ui::DropTargetWin::DragOver(unsigned long key_state=1, _POINTL cursor_position={...}, unsigned long * effect=0x5218279c)
9 [External Code]
10 base.dll!base::MessagePumpForUI::ProcessMessageHelper(const tagMSG & msg={...})
11 base.dll!base::MessagePumpForUI::ProcessNextWindowsMessage()
12 base.dll!base::MessagePumpForUI::DoRunLoop()
13 base.dll!base::MessagePumpWin::RunWithDispatcher(base::MessagePump::Delegate * delegate=0x42aef608, base::MessagePumpDispatcher * dispatcher=0x00000000)
14 base.dll!base::MessagePumpWin::Run(base::MessagePump::Delegate * delegate=0x42aef608)
15 base.dll!base::MessageLoop::RunHandler()
16 base.dll!base::RunLoop::Run()
17 chrome.dll!ChromeBrowserMainParts::MainMessageLoopRun(int * result_code=0x42aed6b0)
18 content.dll!content::BrowserMainLoop::RunMainMessageLoopParts()
19 content.dll!content::BrowserMainRunnerImpl::Run()
20 content.dll!content::BrowserMain(const content::MainFunctionParams & parameters={...})
21 content.dll!content::RunNamedProcessTypeMain(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & process_type={...}, const content::MainFunctionParams & main_function_params={...}, content::ContentMainDelegate * delegate=0x0018fb64)
22 content.dll!content::ContentMainRunnerImpl::Run()
23 content.dll!content::ContentMain(const content::ContentMainParams & params={...})
24 chrome.dll!ChromeMain(HINSTANCE__ * instance=0x00400000, sandbox::SandboxInterfaceInfo * sandbox_info=0x0018fbc8)
25 chrome.exe!MainDllLoader::Launch(HINSTANCE__ * instance=0x00400000)
26 chrome.exe!wWinMain(HINSTANCE__ * instance=0x00400000, HINSTANCE__ * prev=0x00000000, wchar_t * __formal=0x00c64182, int __formal=10)
2. Then get the MIME type from the registry:
*1 net.dll!net::PlatformMimeUtil::GetPlatformMimeTypeFromExtension(const std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > & ext={...}, std::basic_string<char,std::char_traits<char>,std::allocator<char> > * result=0x45c0f734)
2 net.dll!net::MimeUtil::GetMimeTypeFromExtensionHelper(const std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > & ext={...}, bool include_platform_types=true, std::basic_string<char,std::char_traits<char>,std::allocator<char> > * result=0x45c0f734)
3 net.dll!net::MimeUtil::GetMimeTypeFromExtension(const std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > & ext={...}, std::basic_string<char,std::char_traits<char>,std::allocator<char> > * result=0x45c0f734)
4 net.dll!net::MimeUtil::GetMimeTypeFromFile(const base::FilePath & file_path={...}, std::basic_string<char,std::char_traits<char>,std::allocator<char> > * result=0x45c0f734)
5 net.dll!net::GetMimeTypeFromFile(const base::FilePath & file_path={...}, std::basic_string<char,std::char_traits<char>,std::allocator<char> > * mime_type=0x45c0f734)
6 chrome.dll!`anonymous namespace'::FindURLMimeType(const GURL & url={...})
7 chrome.dll!base::internal::RunnableAdapter<std::basic_string<char,std::char_traits<char>,std::allocator<char> > (__cdecl*)(GURL const &)>::Run(const GURL & <args_0>={...})
8 chrome.dll!base::internal::InvokeHelper<0,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,base::internal::RunnableAdapter<std::basic_string<char,std::char_traits<char>,std::allocator<char> > (__cdecl*)(GURL const &)>,base::internal::TypeList<GURL const &> >::MakeItSo(base::internal::RunnableAdapter<std::basic_string<char,std::char_traits<char>,std::allocator<char> > (__cdecl*)(GURL const &)> runnable={...}, const GURL & <args_0>={...})
9 chrome.dll!base::internal::Invoker<base::IndexSequence<0>,base::internal::BindState<base::internal::RunnableAdapter<std::basic_string<char,std::char_traits<char>,std::allocator<char> > (__cdecl*)(GURL const &)>,std::basic_string<char,std::char_traits<char>,std::allocator<char> > __cdecl(GURL const &),GURL>,base::internal::TypeList<base::internal::UnwrapTraits<GURL> >,base::internal::InvokeHelper<0,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,base::internal::RunnableAdapter<std::basic_string<char,std::char_traits<char>,std::allocator<char> > (__cdecl*)(GURL const &)>,base::internal::TypeList<GURL const &> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > __cdecl(void)>::Run(base::internal::BindStateBase * base=0x52240ae0)
10 chrome.dll!base::Callback<std::basic_string<char,std::char_traits<char>,std::allocator<char> > __cdecl(void)>::Run()
11 chrome.dll!base::internal::ReturnAsParamAdapter<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >(const base::Callback<std::basic_string<char,std::char_traits<char>,std::allocator<char> > __cdecl(void)> & func={...}, std::basic_string<char,std::char_traits<char>,std::allocator<char> > * result=0x52278338)
12 chrome.dll!base::internal::RunnableAdapter<void (__cdecl*)(base::Callback<std::basic_string<char,std::char_traits<char>,std::allocator<char> > __cdecl(void)> const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *)>::Run(const base::Callback<std::basic_string<char,std::char_traits<char>,std::allocator<char> > __cdecl(void)> & <args_0>={...}, std::basic_string<char,std::char_traits<char>,std::allocator<char> > * const & <args_1>=0x52278338)
13 chrome.dll!base::internal::InvokeHelper<0,void,base::internal::RunnableAdapter<void (__cdecl*)(base::Callback<std::basic_string<char,std::char_traits<char>,std::allocator<char> > __cdecl(void)> const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *)>,base::internal::TypeList<base::Callback<std::basic_string<char,std::char_traits<char>,std::allocator<char> > __cdecl(void)> const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > * const &> >::MakeItSo(base::internal::RunnableAdapter<void (__cdecl*)(base::Callback<std::basic_string<char,std::char_traits<char>,std::allocator<char> > __cdecl(void)> const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *)> runnable={...}, const base::Callback<std::basic_string<char,std::char_traits<char>,std::allocator<char> > __cdecl(void)> & <args_0>={...}, std::basic_string<char,std::char_traits<char>,std::allocator<char> > * const & <args_1>=0x52278338)
14 chrome.dll!base::internal::Invoker<base::IndexSequence<0,1>,base::internal::BindState<base::internal::RunnableAdapter<void (__cdecl*)(base::Callback<std::basic_string<char,std::char_traits<char>,std::allocator<char> > __cdecl(void)> const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *)>,void __cdecl(base::Callback<std::basic_string<char,std::char_traits<char>,std::allocator<char> > __cdecl(void)> const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *),base::Callback<std::basic_string<char,std::char_traits<char>,std::allocator<char> > __cdecl(void)>,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *>,base::internal::TypeList<base::internal::UnwrapTraits<base::Callback<std::basic_string<char,std::char_traits<char>,std::allocator<char> > __cdecl(void)> >,base::internal::UnwrapTraits<std::basic_string<char,std::char_traits<char>,std::allocator<char> > *> >,base::internal::InvokeHelper<0,void,base::internal::RunnableAdapter<void (__cdecl
*)(base::Callback<std::basic_string<char,std::char_traits<char>,std::allocator<char> > __cdecl(void)> const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *)>,base::internal::TypeList<base::Callback<std::basic_string<char,std::char_traits<char>,std::allocator<char> > __cdecl(void)> const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > * const &> >,void __cdecl(void)>::Run(base::internal::BindStateBase * base=0x52240bf0)
15 base.dll!base::Callback<void __cdecl(void)>::Run()
16 base.dll!base::`anonymous namespace'::PostTaskAndReplyRelay::Run()
17 base.dll!base::internal::RunnableAdapter<void (__thiscall base::`anonymous namespace'::PostTaskAndReplyRelay::*)(void)>::Run(base::`anonymous-namespace'::PostTaskAndReplyRelay * object=0x5223b498)
18 base.dll!base::internal::InvokeHelper<0,void,base::internal::RunnableAdapter<void (__thiscall base::`anonymous namespace'::PostTaskAndReplyRelay::*)(void)>,base::internal::TypeList<base::`anonymous namespace'::PostTaskAndReplyRelay *> >::MakeItSo(base::internal::RunnableAdapter<void (__thiscall base::`anonymous namespace'::PostTaskAndReplyRelay::*)(void)> runnable={...}, base::`anonymous-namespace'::PostTaskAndReplyRelay * <args_0>=0x5223b498)
19 base.dll!base::internal::Invoker<base::IndexSequence<0>,base::internal::BindState<base::internal::RunnableAdapter<void (__thiscall base::`anonymous namespace'::PostTaskAndReplyRelay::*)(void)>,void __cdecl(base::`anonymous namespace'::PostTaskAndReplyRelay *),base::internal::UnretainedWrapper<base::`anonymous namespace'::PostTaskAndReplyRelay> >,base::internal::TypeList<base::internal::UnwrapTraits<base::internal::UnretainedWrapper<base::`anonymous namespace'::PostTaskAndReplyRelay> > >,base::internal::InvokeHelper<0,void,base::internal::RunnableAdapter<void (__thiscall base::`anonymous namespace'::PostTaskAndReplyRelay::*)(void)>,base::internal::TypeList<base::`anonymous namespace'::PostTaskAndReplyRelay *> >,void __cdecl(void)>::Run(base::internal::BindStateBase * base=0x52264d70)
20 base.dll!base::Callback<void __cdecl(void)>::Run()
21 base.dll!base::SequencedWorkerPool::Inner::ThreadLoop(base::SequencedWorkerPool::Worker * this_worker=0x441153c0)
22 base.dll!base::SequencedWorkerPool::Worker::Run()
23 base.dll!base::SimpleThread::ThreadMain()
24 base.dll!base::`anonymous namespace'::ThreadFunc(void * params=0x44115460)
At this step Chromium reads the "Content Type" string which is "application/vnd.ms-powerpoint.template.macroEnabled.12" — note the capital 'E' in 'macroEnabled'.
3. Then proceed with getting a plugin for a specified MIME type:
*1 base.dll!base::debug::BreakDebugger()
2 base.dll!logging::LogMessage::~LogMessage()
3 content.dll!content::PluginList::GetPluginInfoArray(const GURL & url={...}, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & mime_type={...}, bool allow_wildcard=false, bool * use_stale=0x0018ec5f, bool include_npapi=true, std::vector<content::WebPluginInfo,std::allocator<content::WebPluginInfo> > * info=0x0018ec44, std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > * actual_mime_types=0x0018ec2c)
4 content.dll!content::PluginServiceImpl::GetPluginInfoArray(const GURL & url={...}, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & mime_type={...}, bool allow_wildcard=false, std::vector<content::WebPluginInfo,std::allocator<content::WebPluginInfo> > * plugins=0x0018ecb4, std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > * actual_mime_types=0x0018ec9c)
5 content.dll!content::PluginServiceImpl::GetPluginInfo(int render_process_id=-1, int render_frame_id=-2, content::ResourceContext * context=0x442cc7b0, const GURL & url={...}, const GURL & page_url={...}, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & mime_type={...}, bool allow_wildcard=false, bool * is_stale=0x00000000, content::WebPluginInfo * info=0x0018ed80, std::basic_string<char,std::char_traits<char>,std::allocator<char> > * actual_mime_type=0x00000000)
6 chrome.dll!BrowserTabStripController::OnFindURLMimeTypeCompleted(const GURL & url={...}, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & mime_type={...})
7 chrome.dll!base::internal::RunnableAdapter<void (__thiscall BrowserTabStripController::*)(GURL const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)>::Run(BrowserTabStripController * object=0x495171f0, const GURL & <args_0>={...}, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & <args_1>={...})
8 chrome.dll!base::internal::InvokeHelper<1,void,base::internal::RunnableAdapter<void (__thiscall BrowserTabStripController::*)(GURL const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)>,base::internal::TypeList<base::WeakPtr<BrowserTabStripController> const &,GURL const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &> >::MakeItSo(base::internal::RunnableAdapter<void (__thiscall BrowserTabStripController::*)(GURL const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)> runnable={...}, const base::WeakPtr<BrowserTabStripController> & weak_ptr={...}, const GURL & <args_0>={...}, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & <args_1>={...})
9 chrome.dll!base::internal::Invoker<base::IndexSequence<0,1>,base::internal::BindState<base::internal::RunnableAdapter<void (__thiscall BrowserTabStripController::*)(GURL const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)>,void __cdecl(BrowserTabStripController *,GURL const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &),base::WeakPtr<BrowserTabStripController>,GURL>,base::internal::TypeList<base::internal::UnwrapTraits<base::WeakPtr<BrowserTabStripController> >,base::internal::UnwrapTraits<GURL> >,base::internal::InvokeHelper<1,void,base::internal::RunnableAdapter<void (__thiscall BrowserTabStripController::*)(GURL const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)>,base::internal::TypeList<base::WeakPtr<BrowserTabStripController> const &,GURL const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &> >,void __cdecl(std::basic_string<char,std::char_traits<char>,std::allocato
r<char> > const &)>::Run(base::internal::BindStateBase * base=0x5353b318, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & <unbound_args_0>={...})
10 chrome.dll!base::Callback<void __cdecl(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)>::Run(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & <args_0>={...})
11 chrome.dll!base::internal::ReplyAdapter<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &>(const base::Callback<void __cdecl(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)> & callback={...}, std::basic_string<char,std::char_traits<char>,std::allocator<char> > * result=0x5352ca18)
12 chrome.dll!base::internal::RunnableAdapter<void (__cdecl*)(base::Callback<void __cdecl(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)> const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *)>::Run(const base::Callback<void __cdecl(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)> & <args_0>={...}, std::basic_string<char,std::char_traits<char>,std::allocator<char> > * const & <args_1>=0x5352ca18)
13 chrome.dll!base::internal::InvokeHelper<0,void,base::internal::RunnableAdapter<void (__cdecl*)(base::Callback<void __cdecl(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)> const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *)>,base::internal::TypeList<base::Callback<void __cdecl(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)> const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *> >::MakeItSo(base::internal::RunnableAdapter<void (__cdecl*)(base::Callback<void __cdecl(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)> const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *)> runnable={...}, const base::Callback<void __cdecl(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)> & <args_0>={...}, std::basic_string<char,std::char_traits<char>,std::allocator<char> > * <args_1>=0x5352ca18)
14 chrome.dll!base::internal::Invoker<base::IndexSequence<0,1>,base::internal::BindState<base::internal::RunnableAdapter<void (__cdecl*)(base::Callback<void __cdecl(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)> const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *)>,void __cdecl(base::Callback<void __cdecl(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)> const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *),base::Callback<void __cdecl(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)>,base::internal::OwnedWrapper<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >,base::internal::TypeList<base::internal::UnwrapTraits<base::Callback<void __cdecl(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)> >,base::internal::UnwrapTraits<base::internal::OwnedWrapper<std::basic_string<char,std::char_traits<char>,std::allocator<cha
r> > > > >,base::internal::InvokeHelper<0,void,base::internal::RunnableAdapter<void (__cdecl*)(base::Callback<void __cdecl(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)> const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *)>,base::internal::TypeList<base::Callback<void __cdecl(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)> const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *> >,void __cdecl(void)>::Run(base::internal::BindStateBase * base=0x5353b898)
15 base.dll!base::Callback<void __cdecl(void)>::Run()
16 base.dll!base::`anonymous namespace'::PostTaskAndReplyRelay::RunReplyAndSelfDestruct()
17 base.dll!base::internal::RunnableAdapter<void (__thiscall base::`anonymous namespace'::PostTaskAndReplyRelay::*)(void)>::Run(base::`anonymous-namespace'::PostTaskAndReplyRelay * object=0x5353b468)
18 base.dll!base::internal::InvokeHelper<0,void,base::internal::RunnableAdapter<void (__thiscall base::`anonymous namespace'::PostTaskAndReplyRelay::*)(void)>,base::internal::TypeList<base::`anonymous namespace'::PostTaskAndReplyRelay *> >::MakeItSo(base::internal::RunnableAdapter<void (__thiscall base::`anonymous namespace'::PostTaskAndReplyRelay::*)(void)> runnable={...}, base::`anonymous-namespace'::PostTaskAndReplyRelay * <args_0>=0x5353b468)
19 base.dll!base::internal::Invoker<base::IndexSequence<0>,base::internal::BindState<base::internal::RunnableAdapter<void (__thiscall base::`anonymous namespace'::PostTaskAndReplyRelay::*)(void)>,void __cdecl(base::`anonymous namespace'::PostTaskAndReplyRelay *),base::internal::UnretainedWrapper<base::`anonymous namespace'::PostTaskAndReplyRelay> >,base::internal::TypeList<base::internal::UnwrapTraits<base::internal::UnretainedWrapper<base::`anonymous namespace'::PostTaskAndReplyRelay> > >,base::internal::InvokeHelper<0,void,base::internal::RunnableAdapter<void (__thiscall base::`anonymous namespace'::PostTaskAndReplyRelay::*)(void)>,base::internal::TypeList<base::`anonymous namespace'::PostTaskAndReplyRelay *> >,void __cdecl(void)>::Run(base::internal::BindStateBase * base=0x5353a998)
20 base.dll!base::Callback<void __cdecl(void)>::Run()
21 base.dll!base::debug::TaskAnnotator::RunTask(const char * queue_function=0x103a2034, const base::PendingTask & pending_task={...})
22 base.dll!base::MessageLoop::RunTask(const base::PendingTask & pending_task={...})
23 base.dll!base::MessageLoop::DeferOrRunPendingTask(const base::PendingTask & pending_task={...})
24 base.dll!base::MessageLoop::DoWork()
25 base.dll!base::MessagePumpForUI::DoRunLoop()
26 base.dll!base::MessagePumpWin::RunWithDispatcher(base::MessagePump::Delegate * delegate=0x42c0f5e0, base::MessagePumpDispatcher * dispatcher=0x00000000)
27 base.dll!base::MessagePumpWin::Run(base::MessagePump::Delegate * delegate=0x42c0f5e0)
28 base.dll!base::MessageLoop::RunHandler()
29 base.dll!base::RunLoop::Run()
30 chrome.dll!ChromeBrowserMainParts::MainMessageLoopRun(int * result_code=0x42c0d688)
31 content.dll!content::BrowserMainLoop::RunMainMessageLoopParts()
32 content.dll!content::BrowserMainRunnerImpl::Run()
33 content.dll!content::BrowserMain(const content::MainFunctionParams & parameters={...})
34 content.dll!content::RunNamedProcessTypeMain(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & process_type={...}, const content::MainFunctionParams & main_function_params={...}, content::ContentMainDelegate * delegate=0x0018fb64)
35 content.dll!content::ContentMainRunnerImpl::Run()
36 content.dll!content::ContentMain(const content::ContentMainParams & params={...})
37 chrome.dll!ChromeMain(HINSTANCE__ * instance=0x00400000, sandbox::SandboxInterfaceInfo * sandbox_info=0x0018fbc8)
38 chrome.exe!MainDllLoader::Launch(HINSTANCE__ * instance=0x00400000)
39 chrome.exe!wWinMain(HINSTANCE__ * instance=0x00400000, HINSTANCE__ * prev=0x00000000, wchar_t * __formal=0x009a4182, int __formal=10)
And it fails on DCHECK, as the MIME type is not all lowercase.
Did this work before? N/A
Chrome version: 51.0.2703.0 Channel: canary
OS Version: 10
Flash Version:
Related CL: https://codereview.chromium.org/1853653004/
,
Apr 13 2016
,
Apr 14 2016
I'm okay with OnFindURLMimeTypeCompleted doing the normalization on its own. I'll note that that PluginService (in //content/public/plugin_service.h) doesn't specify that the MIME types it receives need to be normalized on entry. Given that //content/public is a public API, I'd also be good with either normalizing MIME types that are crossing that boundary or documenting and enforcing that the MIME type needs to be normalized.
,
Apr 27 2016
,
Apr 28 2017
This issue has been available for more than 365 days, and should be re-evaluated. Please re-triage this issue. The Hotlist-Recharge-Cold label is applied for tracking purposes, and should not be removed after re-triaging the issue. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Aug 13
Archiving old bugs that have Hotlist-Recharge-Cold and haven't been modified in over a year. If you feel this issue should still be addressed, feel free to reopen it or to file a new issue. |
|||||
►
Sign in to add a comment |
|||||
Comment 1 by rsleevi@chromium.org
, Apr 8 2016Components: UI>Browser>TabStrip Internals>Plugins
Summary: Non-lowercase MIME types are incorrectly handled when dragging and dropping to the TabStrip (was: Non-lowercase MIME types are incorrectly handled on Windows)