;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Senado decide que LGPD entra em vigência agora, mas prazo depende de sanção

Felipe Oliveira

Colaboração para Tilt

26/08/2020 17h26Atualizada em 26/08/2020 22h04

O Senado Federal aprovou nesta quarta-feira (26) a vigência da LGPD (Lei Geral de Proteção de Dados), que cuidará do tratamento de dados pessoais dos brasileiros, incluindo os ados e compartilhados na internet. Assim, a MP tornou-se o PLC (Projeto de Lei de Conversão) 34/2020 e agora vai para a sanção do presidente Jair Bolsonaro.

Como o adiamento foi derrubado, a primeira informação ada pela assessoria de imprensa do Senado era de que a LGPD aria a valer já a partir desta quinta-feira (27), com ou sem a sanção do presidente. No entanto, especialistas divergem sobre quando a lei entraria em vigor: se a partir de amanhã, retroagindo no dia 14/08, ou se somente após a sanção, que pode ocorrer em até 15 dias úteis após recebimento do projeto na Casa Civil.

Posteriormente, o Senado disse que a LGPD não entrará em vigor imediatamente, mas somente após sanção ou veto dos demais dispositivos da MP 959/2020.

De qualquer forma, as punições à nova lei (até 2% do faturamento de empresas, no limite de até R$ 50 milhões) foram adiadas até agosto de 2021 pela Lei nº 14.010, criada em junho deste ano, então não valerão neste primeiro momento.

A LGPD foi aprovada em 2018 e estava prevista para entrar em vigor no dia 14 de agosto deste ano. Mas medida provisória do presidente, emitida em abril, sugeriu o adiamento da vigência da lei para maio do ano que vem por entender que parte da sociedade não teve condições de se adaptar à LGPD até agosto por causa da pandemia do coronavírus.

A medida provisória (MP) 959/2020, que foi aprovada ontem na Câmara dos Deputados, foi votada no Senado, mas sem o artigo 4º, que adiava a vigência da LGPD para até 31 de dezembro deste ano. Os senadores derrubaram, por unanimidade, o artigo, alegando que a matéria já havia sido votada meses atrás.

Falta "xerife dos dados"

Peça fundamental no desenho da LGPD, a ANPD (Autoridade Nacional de Proteção de Dados) — órgão que funcionará como "xerife" na interpretação, defesa e orientação da lei — teve sua criação aprovada no ano ado, mas o órgão ainda não foi instituído pelo governo federal.

Especialistas ouvidos por Tilt dizem que a vigência imediata da LGPD é um estímulo para o governo federal criar a autoridade de dados. Já o seu adiamento era visto como uma justificativa para que a criação da autoridade fosse empurrada para depois.

"O governo federal está obrigado desde 2018 a criar a autoridade e não criou. A medida que não cria, gera uma situação de insegurança, a sociedade pede para atrasar", diz Danilo Doneda, advogado e professor do IDP (Instituto Brasiliense de Direito Público).

A Coalizão de Direitos na Rede, movimento que engloba 42 organizações, defendeu que a LGPD, uma vez em vigor, servirá para "harmonizar legislações setoriais, regras constitucionais e demais entendimentos jurídicos sobre as práticas de uso e compartilhamento de dados pessoais". O grupo ainda destacou a importância da lei em vigência para induzir a criação da ANPD.

Insegurança jurídica

Os favoráveis ao adiamento veem insegurança jurídica com a lei ando a valer agora. "Uma lei geral sem autoridade não deveria existir. Existem pontos obscuros que necessitam de uma regulamentação. Quem vai ter esse papel é a ANPD, cuja função é importantíssima para que a lei possa entrar em vigência e todos seus artigos serem contemplados", argumenta Thomaz Côrte Real, consultor jurídico da Abes (Associação Brasileira de Empresas de Software).

Diego Gualda, advogado especialista em tecnologia do Machado Meyer Advogados, concorda, mas ressalta que a insegurança jurídica não se devia apenas à pandemia.

"Se a gente tivesse a ANPD funcionando, ele poderia disciplinar e criar salvaguardas para as empresas num momento de depressão econômica. Os processos de adequação não são baratos. Você soma tudo isso e tem uma situação de insegurança jurídica bastante grande da aplicação da lei", afirma.

Marcela Ejnisman, sócia responsável pelas áreas de cibersegurança e privacidade do Tozzini Freire Advogados, questiona os possíveis riscos jurídicos que a entrada em vigor agora em agosto causaria. "Na Europa, quando o GDPR [lei de dados da União Europeia) entrou, não estavam prontos. Deram um prazo de carência. Elas foram entrando em conformidade", explica.